使用SimpleAdapter创建list很简单
//生成适配器,数组===》ListItem
SimpleAdapter mSchedule = new SimpleAdapter(getApplicationContext(), tempList, R.layout.record_listitem,
new String[] {"ItemTitle", "ItemText"},
new int[] {R.id.ItemTitle,R.id.ItemText});
缺点是不能自定义Item的样式。
比如把
中签入签出使用不同的文字颜色,甚至更加复杂的逻辑操作,SimpleAdapter就很难实现了。
对于这个问题,我们可以使用自定义adapter,具体操作如下:
- 新建一个Adapter,继承自BaseAdapter
- 实现BaseAdapter中的四个方法
其中getView就是自定义样式的主要方法 - 调用Adapter
package com.halfopen.h.cislsign.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.halfopen.h.cislsign.R;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by h on 2017/7/24.
*/
public class RecordListAdapter extends BaseAdapter {
//数据
private ArrayList<HashMap<String, String>> list;
private Context context;
public RecordListAdapter(Context context, ArrayList<HashMap<String, String>> list){
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//自定义界面
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater _LayoutInflater = LayoutInflater.from(this.context);
convertView = _LayoutInflater.inflate(R.layout.record_listitem, null);
if(convertView!=null){
TextView nameView = (TextView) convertView.findViewById(R.id.ItemTitle); //用户名
TextView actionView = (TextView) convertView.findViewById(R.id.ItemAction); //签入/签出
TextView timeView = (TextView) convertView.findViewById(R.id.ItemText); //时间
String name = list.get(position).get("ItemTitle");
String action = list.get(position).get("ItemAction");
String time = list.get(position).get("ItemText");
nameView.setText(name);
actionView.setText(action);
timeView.setText(time);
if (action.equals("签出")){
actionView.setTextColor(convertView.getResources().getColorStateList(R.color.colorAccent));
}
}
return convertView;
}
}