始化数据
data = new ArrayList<HashMap>();
for (int i = 0; i < 20; i++) {
map = new HashMap();
map.put("title", "title-->" + i);
map.put("content", "content--" + i);
data.add(map);
}
设置ListView
adapter = new MyAdapter(CheckList.this, data);
mListView.setAdapter(adapter);
// 为listview的子项添加点击事件,position就是原来的arg2
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
System.out.println("您所点击的行号是:" + position);
}
});
定义我们需要的adapter
int count = scroll_num;
Context mContext;
ArrayList<HashMap> mData;
LayoutInflater mInflater;
public MyAdapter(Context context, ArrayList<HashMap> data) {
this.mContext = context;
this.mData = data;
mInflater = (LayoutInflater) mContext
.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
if (count > mData.size()) {
count = mData.size();
}
isSelected = new HashMap<Integer, Boolean>();
for (int i = 0; i < data.size(); i++) {
isSelected.put(i, false);
}
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_listview, null);
holder = new ViewHolder();
holder.content = (TextView) convertView
.findViewById(R.id.item_listview_content);
holder.checkBox = (CheckBox) convertView
.findViewById(R.id.item_listview_checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.content
.setText(data.get(position).get("content").toString());
holder.checkBox.setChecked(isSelected.get(position));
holder.checkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (isSelected.get(position)) {
isSelected.put(position, false);
} else {
isSelected.put(position, true);
}
notifyDataSetChanged();
}
});
return convertView;
}
最后再定义一个xml的adapter