AndroidのActivity之Listview数据项更改

先看效果,点击更改,换掉头像。

 

想过两个办法一个是直接把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,即数据源-视图-适配器,适配器通过一定的规则把数据安排在视图上。

 <下次补上>

 

posted @ 2012-08-31 17:39  bvin  阅读(973)  评论(0编辑  收藏  举报