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

时间: 2024-10-13 03:10:02

android 模拟微信消息 OnItemClickListener()方法的相关文章

Android模拟微信主页面的Demo

Android模拟微信主页面的Demo 效果图如下: 项目结构图如下: ContanctFragment: package com.demo.moniwexin; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widge

另类保存微信公众平台历史消息的方法 - 星标消息

前面怎样把微信聊天记录导出备份到电脑[微信公众平台技巧]介绍的通过复制源代码来保存微信公众平台历史消息的方法,有网友反映说不会用批量替换.不会批量换行保存,一头雾水.这里我们就说个简单的方法,直接用星标消息保存,打开微信公众号消息管理,鼠标移动到你要保存的消息,右侧会显示几个菜单,其中有个星星形状的,默认是灰色的,如下图红框所示,点击后变成黄色的小星星,这样微信公众号星标信息就完成了,so easy!哪里要存点哪里! 腾讯客服提供的回答"微信公众号星标信息有什么用?" 他们的解释是:

微信公众平台群发消息的方法及注意事项

群发消息的方法 操作方法:登录微信公众平台(https://mp.weixin.qq.com)=>群发消息=>根据需要填写文字/语音/图片/视频/录音等内容后,选择对群发对象.性别.群发地区发送即可. 群发消息内容 目前支持群发的内容:文字.语音.图片.视频.图文消息. 1.群发内容中需添加文字+图片+视频,可先在“素材管理”中设置图文消息,然后群发时选择“图文消息”类型即可. 2.上传至素材管理中的图片.语音可多次群发,没有有效期. 3.群发图文消息的标题上限为64个字节: 4.群发内容字数

用Fiddler可以设置浏览器的UA 和 手动 --Chrome模拟手机浏览器(iOS/Android)的三种方法,亲测无误!

附加以一种软件的方法是:用Fiddler可以设置浏览器的UA 以下3种方法是手动的 通过伪装User-Agent,将浏览器模拟成Android设备. 第一种方法:新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择“复制”,复制一个图标副本到桌面.右击该副本,选择“属性”,打开相应的对话框,在“目标”文本框的字符后面添加以下语句:“--user-agent="Android"”,如下图: 注意user前面是两个“-”,并且“chrome.exe”与“--

Android模拟位置信息

Android模拟位置程序,俗称GPS欺骗,只能修改采用GPS定位的软件. 手机定位方式目前有4种:基站定位,WIFI定位,GPS定位,AGPS定位 常见的修改手法: 1. 抓包欺骗法,抓包改包欺骗服务器端, 但是得专门去针对某款app,而且现在很多app数据包都加密了 2. hook java层经纬度获取函数, 这个方法以前可以用,现在不行了 3. hook native层经纬度获取函数 4. 使用允许模拟地址位置信息(不是很通用有版本限制) 为了修改微信朋友圈地理位置信息,为了好玩 试过了上

调试 Android* x86 应用程序的方法以及要使用的工具

作者:Xiaodong Wang 1.简介 众所周知,Android* 开发人员头顶许多称呼:设计员.程序猿等,并且通常会不可避免地被称为故障检修工.代码中的错误无法避免,因此无论您是否一开始就造成错误,了解调试工具以及如何迅速而有效地跟踪并解决错误都很重要.鉴于此,如今的 Android 开发人员必须掌握有效的调试技巧.本文提供了 Android 应用程序调试工具的简单教学,用于帮助 Android SDK 以及相关工具的新手迅速入门,并在 Android x86 平台上更有效地解决故障. 2

ListView模拟微信好友功能

ListView模拟微信好友功能 效果图: 分析: 1.创建listView 2.创建数据 3.创建适配器 将数据放到呈现数据的容器里面. 将这个容器(带数据)连接适配器. 4.ListView设置适配器 代码: 1 package fry; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.example.weChatFriends.R; 7 8 import android.app.Activity

Android Handler AsyncTask 消息机制

一.Android消息机制一 Android 有一种叫消息队列的说法,这里我们可以这样理解:假如一个隧道就是一个消息队列,那么里面的每一部汽车就是一个一个消息,这里我们先忽略掉超车等种种因素,只那么先进隧道的车将会先出,这个机制跟我们android 的消息机制是一样的. 角色描述 1. Looper:(相当于隧道) 一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue( 车队,消息隧道) . 2. Handler: 你可以构造Handler 对象来与Looper

Android中Handler的使用方法——在子线程中更新界面

本文主要介绍Android的Handler的使用方法.Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列.每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联. Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器.2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Han