先看效果,点击更改,换掉头像。
想过两个办法一个是直接把Listview里ItemView里的ImageView接出来,赋值给成员变量,然后在单机事件中,改变它。
public class MainActivity extends Activity { /** Called when the activity is first created. */ ListView lv; ImageView iv; ....... class BindAdapter extends BaseAdapter{ @Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub //bindView if(arg1==null){ holder = new ViewHolder(); arg1 = inflater.inflate(R.layout.item, null); holder.bt = (Button)arg1.findViewById(R.id.bt); holder.tv = (TextView)arg1.findViewById(R.id.tv); holder.iv = (ImageView)arg1.findViewById(R.id.iv); arg1.setTag(holder); }else{ holder = (ViewHolder)arg1.getTag(); } //bindData holder.bt.setOnClickListener(new Lsn(arg0,holder.iv)); Map<String,Object> map = new HashMap<String,Object>(); map = list.get(arg0); holder.tv.setText((String)map.get("tv"));//绑定map中tv元素 holder.iv.setImageResource((Integer)map.get("iv"));//绑定map中iv元素 MainActivity.this.iv = iv; return arg1; } class Lsn implements View.OnClickListener{ @Override public void onClick(View v) { this.iv.setImageResource(R.drawable.me); } }
最终没看到效果,貌似不行。
第二种就是根据MVC模式,通过Controler去改变View,而Adapter正是充当着这个角色。首先,先更改数据源List<? extends Map>,然后再用适配器Adapter去刷新视图。我觉得在android上应该叫DVA,Data-View-Adapter,即数据源-视图-适配器,适配器通过一定的规则把数据安排在视图上。
<下次补上>