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()方法 [3]的更多相关文章

  1. android 模拟微信消息框 BaseAdapter()方法 [2]

    在昨天的微信布局的基础上加内容 http://www.cnblogs.com/Seven-cjy/p/6098024.html 项目下/res/layout下创建一个 listview_layout. ...

  2. Android模拟微信主页面的Demo

    Android模拟微信主页面的Demo 效果图如下: 项目结构图如下: ContanctFragment: package com.demo.moniwexin; import android.app ...

  3. Android仿微信QQ等实现锁屏消息提醒

    demo代码如下: import android.content.Intent; import android.os.Bundle; import android.support.v7.app.App ...

  4. Chrome模拟手机浏览器(iOS/Android)的三种方法,亲测无误!

    大网站都有推出自己的手机访问版本页面,不管是新闻类还是视频网站,我们在电脑是无法直接访问到手机网站的,比如我经常访问一个3g.qq.com这个手机站点,如果在电脑上直接打开它,则会跳转到其它页面,一般 ...

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

    附加以一种软件的方法是:用Fiddler可以设置浏览器的UA 以下3种方法是手动的 通过伪装User-Agent,将浏览器模拟成Android设备. 第一种方法:新建Chrome快捷方式 右击桌面上的 ...

  6. Android模拟、实现、触发系统按键事件的方法

     Android模拟.实现.触发系统按键事件的方法 /** * 模拟系统按键. * * @param keyCode */ public static void onKeyEvent(final ...

  7. android 模拟抢红包 原理

    Android微信抢红包外挂 源代码 标签: 微信 抢红包 外挂 插件 2015-02-20 22:59 30211人阅读 评论(16) 收藏 举报  分类: Android(58)  版权声明:本文 ...

  8. Android中微信抢红包助手的实现

    参考(感谢作者):http://www.jianshu.com/p/cd1cd53909d7 http://blog.csdn.net/jiangwei0910410003/article/detai ...

  9. ListView模拟微信好友功能

    ListView模拟微信好友功能 效果图: 分析: 1.创建listView 2.创建数据 3.创建适配器 将数据放到呈现数据的容器里面. 将这个容器(带数据)连接适配器. 其实是直接在我们自己写的a ...

随机推荐

  1. Jenkins 五: 构建Ant项目

    1. 点击“新建”,在“Item名称”栏输入要构建的项目名,比如“Ant_project”,选择“构建一个自由风格的软件项目”,点击“OK”按钮. 2. 找到“源码管理”-> “Subversi ...

  2. javaIO流小结(1)

    UTF-8的字节占多少个字节? 常用中文字符用utf-8编码占用3个字节(大约2万多字),超大字符集中要占4个字节.在内存中是2个字节,真正写到硬盘上面的是3个字节. GBK.GB2312汉字占2个字 ...

  3. HashTable和HashMap的区别

    1.HashTable线程安全,同步,效率相对低下. HashMap线程不安全,非同步,效率相对高 2.父类:HashTable的父类是Dictionary HashMap是AbstractMap 3 ...

  4. Hadoop在linux下无法启动DataNode解决方法

    最近重新捡起了Hadoop,所以博客重新开张- 首先描述一下我的问题:这次我使用eclipse在Ubuntu上运行hadoop程序.首先,按照厦门大学数据库实验室的eclipse下运行hadoop程序 ...

  5. static作用——The static effect

    1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区). 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它 ...

  6. IOS Dictionary和Model相互转换

    // // HYBJSONModel.h // Json2ModelDemo // // Created by huangyibiao on 14-9-15. // Copyright (c) 201 ...

  7. 安装Stomp扩展时错误提示error: 'zend_class_entry' has no member named 'default_properties'

    在安装stomp扩展时, 有这样的提示 error: 'zend_class_entry' has no member named 'default_properties' 交待下安装上下文, sto ...

  8. QT pro文件解析

    在QT中使用qmake自动生成pro文件,如果要自己定制工程选项,则需要自行修改pro文件. pro文件有以下关键字:TEMPLATE.TARGET.DESTDIR.DEPENDPATH.INCLUD ...

  9. Day8 - Python网络编程 Socket编程

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  10. C#解leetcode 152. Maximum Product Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...