public class MoreAdapter extends BaseAdapter {
private ArrayList<HashMap<String, Object>> attentionList;
private Context context;
private int selectedPosition = -1;// 选中的位置
public MoreAdapter(Context context,
ArrayList<HashMap<String, Object>> attentionList) {
// TODO Auto-generated constructor stub
this.context = context;
this.attentionList = attentionList;
}
class ViewHolder {
TextView[] tv = new TextView[4];
int[] tv_id = new int[] { R.id.tv1, R.id.tv2, R.id.tv3, R.id.tv4 };
// CheckBox cb;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return attentionList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void setSelectedPosition(int position) {
selectedPosition = position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertView == null) {
LayoutInflater mInflater = LayoutInflater.from(context);
convertView = mInflater.inflate(R.layout.devicelistview, null);
holder = new ViewHolder();
for (int i = 0; i < holder.tv_id.length; i++) {
holder.tv[i] = (TextView) convertView
.findViewById(holder.tv_id[i]);
}
// holder.cb=(CheckBox)convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
for (int i = 0; i < holder.tv.length; i++) {
// holder.tv[i].setText(attentionList.get(position)
// .get("ItemText" + (i + 1)).toString());
if (attentionList.get(position).get("ItemText" + (i + 1)) == null) {
holder.tv[i].setText("");
} else {
holder.tv[i].setText(attentionList.get(position)
.get("ItemText" + (i + 1)).toString());
}
}
if (selectedPosition == position) {
convertView.setBackgroundColor(0x5653fbff);
// for(int i=0;i<holder.tv.length;i++)
// holder.tv[i].setTextSize(20);
} else {
convertView.setBackgroundColor(Color.TRANSPARENT);
// for(int i=0;i<holder.tv.length;i++)
// holder.tv[i].setTextSize(17);
}
return convertView;
}
}
程序中调用:
MoreAdapter adapter = new MoreAdapter(this, listItem);
// 添加并且显示
listView.setAdapter(adapter);
listView的onItemClick方法如下:
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
HashMap<String, Object> item = (HashMap<String, Object>) listItem
.get(arg2);
position = arg2;
adapter.setSelectedPosition(arg2);
adapter.notifyDataSetInvalidated();
spinner.setSelection(arrayAdapter.getPosition(item.get("ItemText2")
.toString()));
listViewItem1 = item.get("ItemText1").toString();
listViewItem2 = item.get("ItemText3").toString();
et1.setText(listViewItem1);
et2.setText(listViewItem2);
}