忘记你的孩子索引。您应该只在适配器中切换某种类型的标志。
然后,当您的 getView 方法再次被调用时,它将重绘您的列表。
IE:
public class YourAdapter extends BaseAdapter {
private boolean useBackgroundTwo = false;
.. constructor ..
@Override
public View getView (int position, View convertView, ViewGroup parent) {
...
...
View background = findViewById(...);
int backgroundResource = R.drawable.one;
if(useBackgroundTwo){
backgroundResource = R.drawable.two;
}
background.setBackgroundResource(backgroundResource);
....
}
public void useNewBackground(){
this.useBackgroundTwo = true;
notifyDataSetChanged();
}
public void useOldBackground(){
this.useBackgroundTwo = false;
notifyDataSetChanged();
}
}
然后在您的活动代码中:
((YourAdapter) listview.getAdapter()).useNewBackground();
更进一步,您可以使用枚举而不是布尔值并具有多种方法setBackgroundGreen()
,setBackgroundRed()
或者您可以传入要使用的可绘制setItemBackground(R.drawable.one);
对象,选择权在您手中。
API:适配器