あなたの子供のインデックスを忘れてください。アダプターで何らかのタイプのフラグを切り替えるだけです。
次に、 getView メソッドが再度呼び出されると、リストが再描画されます。
すなわち:
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: アダプター