始化資料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); } 設定ListViewadapter = 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); } }); 定義我們需要的adapterint 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