• android 模拟微信消息 OnItemClickListener()方法 [3]


    http://www.cnblogs.com/Seven-cjy/p/6101555.html 是基础上修改 MainActivity.java

    /winxinmff/src/com/example/winxinmff/MainActivity.java

    package com.example.winxinmff;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    import com.example.entity.Message;
    
    public class MainActivity extends Activity {
    
        private ListView lv;
        private List<Message> messageList = new ArrayList<Message>();
        private List<Map<String, Object> > messageList2 = new ArrayList<Map<String, Object> >();
        private SimpleAdapter sa;
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.weixin);
    
            // 定义一个界面与数据的混合体
            
            
            // 模拟读取数据库或者互联网
            for (int i = 0; i < 20; i++) {   // 模拟20条数据   
                /*
                Message p = new Message();
                p.setTou1("xxx");
                p.setUserName("不对外开放 高内聚 ");
                p.setLastMessage("匿名内部类也就是没有名字的内部类匿名内部类也就是没有名字的内部类");
                p.setDatetime("11.11");
                messageList.add(p);
                */
                
                // 定义一个界面与数据的混合体,一个item 代表一行记录
                Map<String, Object> item = new HashMap<String, Object>();
                // 一行记录,包含多个控件
                item.put("tou", R.drawable.a);
                item.put("userName", "不对外开放 高内聚"+i);
                item.put("lasMessage", "匿名内部类也就是没有名字的内部类匿名内部类也就是没有名字的内部类");
                item.put("datetime", "12.12");
                messageList2.add(item);
                
            }
    
            lv = (ListView) findViewById(R.id.listView1);
            sa = new SimpleAdapter(this,
                    messageList2,    //     data 不仅仅是数据,而是一个与界面耦合的数据混合体
                    R.layout.listview_item_layout,
                    new String[] {"tou","userName","lasMessage","datetime"}, //from 从哪来
                    new int[] {R.id.imageView1, R.id.tv_userName,R.id.tv_lasMessage,R.id.tv_datetime});
            
            lv.setAdapter(sa);
            lv.setOnItemClickListener(new OnItemClickListener() {
    
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    Map<String, Object> item = messageList2.get(position);
                    item.put("userName", "阿凡达"+ position);
                    sa.notifyDataSetChanged();
                    
                    //Toast.makeText(MainActivity.this, (String)item.get("userName"), Toast);
                }
            });
            
            
            // 简单理解为VC绑在一起
            /*
             * baseAdapter 店长推荐 5 星级
            lv.setAdapter(new BaseAdapter() {
                private View view;
    
                public int getCount() {                // 返回多少条记录
                    return messageList.size();
                }
    
                // 每一个item项, 返回一次界面
                public View getView(int position, View convertView, ViewGroup parent) {
    
                    // 布局不变,数据变
    
                    // 如果缓存为空 ,我们生成新的布局作为1个 item
                    if (convertView == null) {
                        Log.i("info: ", "没有缓存,重新生成" + position);
                        LayoutInflater inflater = MainActivity.this.getLayoutInflater();
    
                        // 因为 getView() 返回的对象, adapter 会自动赋给 List
                        view = inflater.inflate(R.layout.listview_item_layout, null);
                    } else {
                        Log.i("info: ", "有缓存,不需要重新生成" + position);
                        view = convertView;
                    }
                    
                    Message m = messageList.get(position);
    
                    TextView tv_userName = (TextView) view.findViewById(R.id.tv_userName);
                    tv_userName.setText(m.getUserName() + position);
    
                    TextView tv_lasMessage = (TextView) view.findViewById(R.id.tv_lasMessage);
                    tv_lasMessage.setText(m.getLastMessage());
    
                    TextView tv_datetime = (TextView) view.findViewById(R.id.tv_datetime);
                    tv_datetime.setText(m.getDatetime());
    
                    return view;
                }
    
                public long getItemId(int position) {
                    return 0;
                }
    
                public Object getItem(int position) {
                    return null;
                }
            });
            
            */
    
        }
    
    }
    MainActivity.java

     2016-11-28

  • 相关阅读:
    TControl的主要功能研究(属性,函数,事件)
    写一个控件,如何实现设计期的可视化
    Delphi 通过脚本 在 设计期 改 控件name 属性
    Delphi TreeView – 自动展开树形结构
    Delphi之创建组件模板(Component Template)
    delphi Controls Components 属性
    Delphi 2009 之 TCategoryPanelGroup[1]: ChevronAlignment 等
    delphi xe 10分组按钮CategoryButtons 折叠按钮
    Delphi ControlCount和ComponentCount的区别
    ComponentCount和ControlCount区别
  • 原文地址:https://www.cnblogs.com/Seven-cjy/p/6108513.html
Copyright © 2020-2023  润新知