[英]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.