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

转载于:https://www.cnblogs.com/Seven-cjy/p/6108513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值