[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件
Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件。
1、为了防止拖动ListView时,在列表末尾重复数据显示。需要加入 HashMap<Integer,View> lmap = new HashMap<Integer,View>();其中Integer为列表位置,View为子项视图,加入数据前首先if
(lmap.get(position)==null) ,满足条件时,加入lmap.put(position, convertView);如果条件不满足,convertView = lmap.get(position);
2、监听每个子控件时,一定要加入final int currentPosition=position;这样可以牢牢抓住每次点击的响应位置;最好把控件集成到类中。
- package logic;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import logic.PlaceAdapter.ViewHolder;
- import org.guiji.BigPictureActivity;
- import org.guiji.ClassUserListActivity;
- import org.guiji.CommentMoodActivity;
- import org.guiji.R;
- import org.guiji.UserHomeActivity;
- import support.ClassUserListImageDownloadTask;
- import support.ImageDownloadTask;
- import support.SystemConstant;
- import android.content.Context;
- import android.content.Intent;
- import android.text.Html;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.View.OnClickListener;
- import android.widget.BaseAdapter;
- import android.widget.ImageView;
- import android.widget.TextView;
- public class ClassUserListAdapter extends BaseAdapter {
- HashMap<Integer,View> lmap = new HashMap<Integer,View>();
- private LayoutInflater mInflater=null;
- private List<Map<String, String>> mData=null;
- private ClassUserListImageDownloadTask imgtask=null;
- private Context context;
- public List<Map<String, String>> getmData() {
- return mData;
- }
- public void setmData(List<Map<String, String>> mData) {
- this.mData = mData;
- }
- public ClassUserListAdapter(Context context){
- this.mInflater = LayoutInflater.from(context);
- this.context=context;
- }
- @Override
- public int getCount() {
- return mData.size();
- }
- @Override
- public Object getItem(int position) {
- return mData.get(position);
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ClassUserListViewHolder holder = null;
- if (lmap.get(position)==null) {
- imgtask=new ClassUserListImageDownloadTask();
- convertView = mInflater.inflate(R.layout.classuserlist_item, null);
- holder=new ClassUserListViewHolder();
- holder.classuserlist_item_userlogo=(ImageView)convertView.findViewById(R.id.classuserlist_item_userlogo);
- holder.classuserlist_item_username=(TextView)convertView.findViewById(R.id.classuserlist_item_username);
- holder.classuserlist_item_statuscontent=(TextView)convertView.findViewById(R.id.classuserlist_item_statuscontent);
- holder.classuserlist_item_idfans1=(TextView)convertView.findViewById(R.id.classuserlist_item_idfans1);
- holder.classuserlist_item_idfans2=(TextView)convertView.findViewById(R.id.classuserlist_item_idfans2);
- holder.classuserlist_item_idmood=(TextView)convertView.findViewById(R.id.classuserlist_item_idmood);
- holder.classuserlist_item_idhuoyuevalue=(TextView)convertView.findViewById(R.id.classuserlist_item_idhuoyuevalue);
- holder.classuserlist_item_msgpic=(ImageView)convertView.findViewById(R.id.classuserlist_item_msgpic);
- holder.classuserlist_item_msgcontent=(TextView)convertView.findViewById(R.id.classuserlist_item_msgcontent);
- holder.classuserlist_item_idtimeplace=(TextView)convertView.findViewById(R.id.classuserlist_item_idtimeplace);
- holder.classuserlist_item_classbutton=(ImageView)convertView.findViewById(R.id.classuserlist_item_classbutton);
- lmap.put(position, convertView);
- convertView.setTag(holder);
- holder.classuserlist_item_username.setText((String)mData.get(position).get("username"));
- if(mData.get(position).get("idstatuscontent")!=null){
- holder.classuserlist_item_statuscontent.setText((String)mData.get(position).get("idstatuscontent"));
- holder.classuserlist_item_statuscontent.setVisibility(0);
- }
- if(mData.get(position).get("idfans1")!=null){
- holder.classuserlist_item_idfans1.setText((String)mData.get(position).get("idfans1"));
- holder.classuserlist_item_idfans1.setVisibility(0);
- }
- if(mData.get(position).get("idfans2")!=null){
- holder.classuserlist_item_idfans2.setText((String)mData.get(position).get("idfans2"));
- holder.classuserlist_item_idfans2.setVisibility(0);
- }
- holder.classuserlist_item_idmood.setText((String)mData.get(position).get("idmood"));
- if(mData.get(position).get("idhuoyuevalue").length()>=4)
- holder.classuserlist_item_idhuoyuevalue.setText("活跃值"+"("+mData.get(position).get("idhuoyuevalue").substring(0, 4)+")");
- else
- holder.classuserlist_item_idhuoyuevalue.setText("活跃值"+"("+mData.get(position).get("idhuoyuevalue")+"0"+")");
- if(mData.get(position).get("idmsgcontent")!=null){
- holder.classuserlist_item_msgcontent.setText((String)mData.get(position).get("idmsgcontent"));
- holder.classuserlist_item_msgcontent.setVisibility(0);
- }
- if(mData.get(position).get("idtime")!=null){
- holder.classuserlist_item_idtimeplace.setText((String)mData.get(position).get("idtime")+" "+(String)mData.get(position).get("idplace"));
- holder.classuserlist_item_idtimeplace.setVisibility(0);
- }
- String temp=SystemConstant.baseURLNone+mData.get(position).get("userlogo")+","+
- SystemConstant.baseURLNone+mData.get(position).get("idmsgpic");
- imgtask.execute(temp,holder);
- }else {
- convertView = lmap.get(position);
- holder = (ClassUserListViewHolder)convertView.getTag();
- }
- final int currentPosition=position;
- holder.classuserlist_item_userlogo.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- MainService.guiji.setCurrentURL(SystemConstant.baseURL+mData.get(currentPosition).get("userLink"));
- Intent it=new Intent(context,UserHomeActivity.class);
- context.startActivity(it);
- }
- });
- holder.classuserlist_item_username.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- MainService.guiji.setCurrentURL(SystemConstant.baseURL+mData.get(currentPosition).get("userLink"));
- Intent it=new Intent(context,UserHomeActivity.class);
- context.startActivity(it);
- }
- });
- holder.classuserlist_item_msgpic.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- MainService.guiji.setCurrentURL(SystemConstant.baseURLNone+mData.get(currentPosition).get("idmsgpic"));
- Intent it=new Intent(context,BigPictureActivity.class);
- context.startActivity(it);
- }
- });
- holder.classuserlist_item_idfans1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- MainService.guiji.deleteReply(SystemConstant.baseURL+mData.get(currentPosition).get("idfans1link"));
- ((ClassUserListActivity) context).createTask();
- }
- });
- holder.classuserlist_item_idfans2.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- MainService.guiji.deleteReply(SystemConstant.baseURL+mData.get(currentPosition).get("idfans2link"));
- ((ClassUserListActivity) context).createTask();
- }
- });
- holder.classuserlist_item_classbutton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- String temp=SystemConstant.baseURL+mData.get(currentPosition).get("idcommentlink");
- // MainService.guiji.setCurrentURL(temp);
- MainService.guiji.setPageType(4);
- MainService.guiji.setBackURL(temp);
- Intent it=new Intent(context,CommentMoodActivity.class);
- context.startActivity(it);
- }
- });
- return convertView;
- }
- public class ClassUserListViewHolder{
- public ImageView classuserlist_item_userlogo;
- public TextView classuserlist_item_username;
- public TextView classuserlist_item_statuscontent;
- public TextView classuserlist_item_idfans1;
- public TextView classuserlist_item_idfans2;
- public TextView classuserlist_item_idmood;
- public TextView classuserlist_item_idhuoyuevalue;
- public ImageView classuserlist_item_msgpic;
- public TextView classuserlist_item_msgcontent;
- public TextView classuserlist_item_idtimeplace;
- public ImageView classuserlist_item_classbutton;
- }
- }
[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件的更多相关文章
- 解决ListView中Item的子控件与Item点击事件冲突
常常会碰到在ListView中点击当中一个Item.会一并触发其子控件的点击事件.比如Item中的Button.ImageButton等.导致了点击Item中Button以外区域也会触发Button点 ...
- Android listview子控件的的点击事件(转)
1.先看图,是否是你想要的 2.布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout ...
- listView 解决焦点冲突问题 item项和子控件之间的冲突
listView 在item布局的顶级布局中设置 android:descendantFocusability="blocksDescendants"可以阻止子控件获取焦点 这样使 ...
- 关于ListView中item与子控件抢夺焦点的解决方法
1.在开发中,listview可以说是我们使用最频繁的控件之一了,但是关于listview的各种问题也是很多.当我们使用自定义布局的Listview的时候,如果在item的布局文件里面存在Button ...
- 初步探讨WPF的ListView控件(涉及模板、查找子控件) - GavinJun
本文结合模板的应用初步介绍ListView的应用 一.Xaml中如何建立数据资源 大部分数据都会来自于后台代码,如何Xaml同样的建立数据源呢?比如建立一个学生List: 首先引入命名空间: xmln ...
- ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决的方法
fragment中加入了button和checkbox这些控件.此时这些子控件会将焦点获取到.所以经常当点击item时变化的是子控件.item本身的点击没有响应. 这时候就能够使用descendant ...
- Android 布局之LinearLayout 子控件weight权重的作用详析(转)
关于Android开发中的LinearLayout子控件权重android:layout_weigh参数的作用,网上关于其用法有两种截然相反说法: 说法一:值越大,重要性越高,所占用的空间越大: 说法 ...
- Android 布局之LinearLayout 子控件weight权重的作用详析
关于Android开发中的LinearLayout子控件权重android:layout_weigh参数的作用,网上关于其用法有两种截然相反说法: 说法一:值越大,重要性越高,所占用的空间越大: 说法 ...
- Android ScrollView 子控件不占满的问题
经常碰到很笨的 ScrollView的子控件无法占满 ScrollView 的空间的问题. 其实只需要加一行,android:fillViewport="true" 但不加上这行就 ...
随机推荐
- linux常用命令一些解释
ls 命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文 件及文件夹清单. 通过ls 命令不仅可以查看li ...
- PHP 利用nginx的X-sendfile控制下载,提高下载效率
https://blog.csdn.net/qq_34839657/article/details/52812885 https://www.jianshu.com/p/bf5c387830b7 为了 ...
- java你应该学会什么
给初学者之一:浅谈java及应用学java 先说什么是Javajava是一种面向对象语言,真正的面向对象,任何函数和变量都以类(class)封装起来至于什么是对象什么是类,我就不废话了关于这两个概念的 ...
- Linux shell中运行命令后加上字符“&”的作用(转)
原文链接为:http://blog.sina.com.cn/s/blog_963453200102uya7.html & 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程, ...
- PostGIS 操作geometry方法
WKT定义几何对象格式: POINT(0 0) ——点 LINESTRING(0 0,1 1,1 2) ——线 POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2 ...
- java通过jdbc插入中文到mysql显示异常(问号或者乱码)
转自:https://blog.csdn.net/lsr40/article/details/78736855 首先本人菜鸡一个,如果有说错的地方,还请大家指出予批评 对于很多初学者来说,中文字符编码 ...
- npm install 装本地一直安装全局问题
想用npm安装一些模块,不管怎么装,一直装作全局. 以为是node有问题,重装了N次,却还发现这个问题. 困惑几天无果, 偶然间通过此文章发现,npm存在配置文件:https://www.sitepo ...
- HDU 2859 Phalanx(二维DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 题目大意:对称矩阵是这样的矩阵,它由“左下到右”线对称. 相应位置的元素应该相同. 例如,这里是 ...
- Linux命令之dig命令挖出DNS的秘密
=== [初次见面] 我相信使用nslookup的同学一定比使用dig的同学多,所以还是有必要花些时间给大家介绍一下dig的. dig,和nslookup作用有些类似,都是DNS查询工具. dig,其 ...
- Linux命令之dig命令实例讲解
1.查看域名的A记录 # dig yahoo.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<> ...