android 模拟微信消息 OnItemClickListener()方法

时间:2016-12-01 22:32:52   收藏:0   阅读:277

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

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!