Tem uma listview que cada linha dela possui uma imageView, preciso trocar essa imageview dinamicamente, eu conseguir pegar a view da linha q eu quero trocar, a partir da view peguei a imageView da view, mais quando tentei alterar a view no adapter nao consegui, tentei usar o notifyall deu erro, tentei o notifydatasetchanged tb nao deu certo, nao acontece nada, alguem sabe alguma forma de fazer essa alteraçao no adapter dinamicamente?
mais deixa eu explicar o q eu fiz, eu criei um HashMap<Integer, View> e dentro do onListItemClick, eu passo a referencia do objeto que e um codigo e passei a view selecionada, quando eu faço uma determinada ação eu chamo um metodo dentro do adapter
[quote]public void mudarImagemProdutoPedido(List itens, HashMap<Integer, View> views) {
for (Item item : itens) {
Produto produto = item.getProduto();
View view = views.get(produto.getCodigo());
((ImageView)view.findViewById(R.list_produtos_id.btn_config_item)).setImageResource(R.drawable.ok);
notifyDataSetChanged();
}
}
so que nao acontece nada a imagem nao muda[/quote]
A view que está no HashMap não é a view que está em evidência para o usuário.
Você deve utilizar LayoutInflater no método getView(…) do adapter.
public View getView(...) {
LayoutInflater inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.item_do_listView, null);
ImageView img = (ImageView) view.findViewById(R.list_produtos_id.btn_config_item);
img.setImageResource(R.drawable.ok);
return view;
}
Abraço =)
Outra solução, vamos dizer que você quer atualizar um certo item no listView ao clicar nele.
ListView lv = (ListView) findViewById(R.id.listView);
lv.setAdapter(new MyAdapter(this));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View v, int position, long id) {
ImageView img = (ImageView) v.findViewById(R.id.imageView);
img.setImageResource(R.drawable.nova_imagem);
lv.removeView(position);
lv.add(v, position);
lv.notifyDataSetChanged();
}
});
Acho que esta código pode funcionar :z
NÂO TENHO CERTEZA… Fiz agora.
Abraço.
fiz praticamente isso, o conceito é o mesmo, mais vlw a dica deu certinho.