[英]Custom ListView changing item color
我有一个带有自定义适配器的ListView
,我想更改项目的背景颜色。 我使用以下代码:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder = new Holder();
final View rowView;
rowView = inflater.inflate(R.layout.program_list, null);
holder.tv = (TextView) rowView.findViewById(R.id.textView1);
holder.img = (ImageView) rowView.findViewById(R.id.imageView1);
holder.tv.setText(result[position]);
holder.img.setImageResource(imageId[position]);
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (position != 0) {
rowView.setBackgroundColor(Color.rgb(70, 190, 200));
}
}
});
return rowView;
}
它工作正常,但是我的问题是-我如何才能在onclick
函数中更改下一个项目的颜色,同时知道最后一个项目不会被按下(导致超出范围的错误)? (如果我在位置4处按项目,则更改位置5的背景色)。
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// ?
}
});
谢谢 :)
如果在适配器myListView
声明为成员变量,并在getView
方法中将其初始化为
this.myListView = (ListView) parent;
然后您可以通过以下方式在onClick
方法中获得当前选定项目的位置:
int currPos = MyCustomAdapter.this.myListView(getPositionForView((View) view.getParent()));
到目前为止,我自己使用了此代码,并且可以正常工作。 现在,根据Android Javadoc,以下表达式将产生下一个视图:
MyCustomAdapter.this.myListView(getChildAt(currPos + 1)).
然后,您应该可以使用该视图进行任何操作,但是我尚未测试这部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.