我有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) {
// ?
}
});
谢谢:)
答案 0 :(得分:1)
如果您在适配器中将myListView
声明为成员变量,并在getView
方法中将其初始化为
this.myListView = (ListView) parent;
然后您通过
获取onClick
方法中当前所选项目的位置
int currPos = MyCustomAdapter.this.myListView(getPositionForView((View) view.getParent()));
到目前为止,我自己使用过此代码,并且可以正常使用。现在,根据Android Javadoc,以下表达式应该产生下一个视图:
MyCustomAdapter.this.myListView(getChildAt(currPos + 1)).
然后你应该能够用这个观点做任何你想做的事情,但我还没有测试过这个部分。