У меня есть CustomAdapter расширения ArrayAdapter, в котором я установить некоторые взгляды внутри LinearLayout - один ряд, как этот (адаптер):Как изменить свойство вида в CustomAdapter?
public View getView(int position, View convertView, ViewGroup parent) {
. . .
ImageView statePic = (ImageView) view.findViewById(R.id.state);
statePic.setImageResource(R.drawable.light_green);
return view;
}
Это прекрасно работает. Но теперь я хочу, чтобы связать контекстное меню на пункт в моем списке, так что у меня есть что-то вроде этого (основной вид деятельности - listActivity):
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()){
case CM_START:
View view = getListAdapter().getView(info.position, null, null);
ImageView statePic = (ImageView)view.findViewById(R.id.state);
// I'm sure this view is the right one
statePic.setImageResource(R.drawable.light_grey);
view.invalidate();
view.refreshDrawableState();
return true;
case CM_STOP:
return true;
}
return super.onContextItemSelected(item);
}
То, что я хочу достичь с помощью этого кода является то, чтобы изменить изображение в этом пункте , но это не работает (представление не обновляется с новым значением). Как я могу это сделать?
Пожалуйста, используйте 'андроида-listview' тег вместо' listview' :) –
хорошо, жаль об этом :-) – shmoula
Что именно делает не работа? Не связано ли привязка ContextMenu или изменение ресурса в ImageView? –