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

Posted Seven7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 模拟微信消息 OnItemClickListener()方法相关的知识,希望对你有一定的参考价值。

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

以上是关于android 模拟微信消息 OnItemClickListener()方法的主要内容,如果未能解决你的问题,请参考以下文章

微信公众平台模拟登录自动群发图文消息工具包

Android:viewpager+ fragment模拟微信首页

Android模拟微信主页面的Demo

微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息

android 仿微信demo————微信消息界面实现(服务端)

android 仿微信demo————微信消息界面实现(服务端)