android开发(SimpleAdapter)运用

SimpleAdapter的参数说明

    第一个参数 表示访问整个android应用程序接口,基本上所有的组件都需要
    第二个参数表示生成一个Map(String ,Object)列表选项
      第三个参数表示界面布局的id  表示该文件作为列表项的组件
      第四个参数表示该Map对象的哪些key对应value来生成列表项
    第五个参数表示来填充的组件 Map对象key对应的资源一依次填充组件 顺序有对应关系

布局和上一篇一样,还是用ListView控件,显示方式不一样,上一篇使用BaseAdapter(),这篇使用SimpleAdapter();

  效果如下

    

  代码:   

public class MainActivity extends Activity {  
    private ListView lv;
    private SimpleAdapter mp;
    //集合
    private List<mess> messagetlist=new ArrayList<mess>();
    private List<Map<String,Object>> messagetlist2=new ArrayList<Map<String,Object>>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.wei);
        //循环读取数据,模仿数据库
        for (int i = 0; i <50; i++) {
            
            //定义一个界面与数据的混合体,一个item代表一行记录
            Map<String,Object> item=new HashMap<String,Object>();
            //一行记录,包含多个控件
            item.put("img",R.drawable.lad);
            item.put("name","少年");
            item.put("mess","过的怎么样啊");
            item.put("date","11-28");
            messagetlist2.add(item);
        }
        //查找listView1对象
        lv=(ListView)findViewById(R.id.listView1);
        mp=new SimpleAdapter(this,
                messagetlist2,//data 不仅仅是数据,而是一个与界面耦合的数据混合体
                R.layout.img, 
                new String[]{"img","name","mess","date"}, 
                new int[]{R.id.imageView1,R.id.name,R.id.mess,R.id.date});
        lv.setAdapter(mp);

            }
            
        });

  刷新Listview,这里是把少年改为青年

 lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parment, View view, int position,
                    long id) {
            Map<String,Object> item=messagetlist2.get(position);
            item.put("name","青年");
            mp.notifyDataSetInvalidated();
            }

  长按Item,出现菜单栏,效果:

     

  代码:

 lv.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {  
            public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) {  
                conMenu.setHeaderTitle("操作");  
                conMenu.add(0, 0, 0, "标为未读");  
                conMenu.add(0, 1, 1, "置顶工作号");  
                conMenu.add(0, 2, 2, "取消关注");  
                conMenu.add(0,3,3,"删除该聊天");
            }  
        });            

    可以去比较下BaseAdapter()和SimpleAdapter()的用法,看下你更适用于哪一种写法。

    

原文地址:https://www.cnblogs.com/yuluo123/p/6109728.html