设立ListView每个item点击背景图片设置
设置ListView每个item点击背景图片设置
利用itemview,fire,line来保存点击的状态
private View itemview; private ImageView fire, line;
意思是,1.前两行带火的图片,其他的没有,
2.点击一行,哪行的背景变色,右边按钮也改变颜色,其他的不变,点击另一行,开始那行还原原来的颜色
final LinearLayout forum_backs = (LinearLayout) convertView .findViewById(R.id.forum_backs); ImageView forum_fire = (ImageView) convertView .findViewById(R.id.forum_fire); final ImageView forum_image = (ImageView) convertView .findViewById(R.id.forum_image); if (index == 0 || index == 1) { forum_fire.setVisibility(View.VISIBLE); }else{ forum_fire.setVisibility(View.INVISIBLE); } forum_backs.setOnClickListener(new OnClickListener() { public void onClick(View view) { Toast.makeText(ForumActivity.this, "第" + index + "行", Toast.LENGTH_SHORT).show(); if (itemview == null) { itemview = view; // fire = forum_fire; line = forum_image; } if (itemview != view) { view.setBackgroundColor(Color.WHITE); } itemview.setBackgroundColor(android.R.color.transparent); view.setBackgroundResource(R.color.backs_forum); line.setImageResource(R.drawable.forum_label); forum_image.setImageResource(R.drawable.forum_label1); itemview = view; // fire = forum_fire; line = forum_image; Intent intent = new Intent(ForumActivity.this, ThreadListActivity.class); startActivity(intent); } });
这种方法在android中一般很少遇到
有的时候遇到ListView拖动到下面,然后再返回去,之前item的状态改变原来的了,如果想记住状态,那么就设置一下状态就行了,比如ListView背景,点击的时候,背景变了,如果想记住这个状态,那么就在点击之前先判断下,比如:
int item =0; final ImageView imageView = (ImageView) layout .findViewById(R.id.score_choise); imageView.setImageResource(R.drawable.pressed); if (item == 1) { imageView.setImageResource(R.drawable.selected); } LinearLayout ly = (LinearLayout) layout.findViewById(R.id.backs); ly.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { if (item == 0) { imageView.setImageResource(R.drawable.selected); mID.addElement(mId); item = 1; } else { imageView.setImageResource(R.drawable.pressed); mID.remove(mId); item = 0; } System.out.println(mID + "**"); } });
这样就OK 了