zoukankan      html  css  js  c++  java
  • 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()的用法,看下你更适用于哪一种写法。

        

  • 相关阅读:
    Linux
    数据库
    第一篇文章
    解决VMware虚拟机Ubuntu 无法上网问题
    mybatis之sql标签与include标签
    第一个只出现一次的字符
    位运算 -- 只出现一次的的数字
    Oracle递归 start with...connect by...prior
    MyBatis中#{ }和${ }的区别
    表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点
  • 原文地址:https://www.cnblogs.com/yuluo123/p/6109728.html
Copyright © 2011-2022 走看看