[转]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" 但不加上这行就 ...
 
随机推荐
- JavaScript 判断手机端访问并跳转 redirect mobile
			
假如你的手机端网站在 /m 目录下 (function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer| ...
 - openjudge-NOI 2.6-1944 吃糖果
			
题目链接:http://noi.openjudge.cn/ch0206/1944/ 题解: 递推,题目中给出了很详细的过程,不讲解 #include<cstdio> int n; int ...
 - Homestead在windows7 下的搭建
			
遇到的问题有 1.Homestead 的版本问题,教程git版本是 v5,最新是v7的,如果用最新,就要求vagrant的版本是 2.0的: 2.启动homestead后,出现 No input fi ...
 - centos6.5 安装、启动vnc
			
一.安装vnc 1.确保当前账号是root2.查看本机是否已经安装vncserver rpm -qa|grep tigervnc 3.安装vncserver yum -y install tigerv ...
 - Oracle 序列(sequence)的创建、修改及删除
			
1.Oracle 创建序列化:create sequence xxxx create sequence student_id minvalue --最小值 nomaxvalue --不设置最大值(由机 ...
 - Java显式锁学习总结之四:ReentrantLock源码分析
			
概述 ReentrantLock,即重入锁,是一个和synchronized关键字等价的,支持线程重入的互斥锁.只是在synchronized已有功能基础上添加了一些扩展功能. 除了支持可中断获取锁. ...
 - 连接数据库:ERROR:The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration prop
			
本打算在maven项目中配置mybatis试试看,想到mybatis如果不是在容器中运行,那么他的事务控制实际上可以使用的是jdbc的提交和回滚,这就要在pom.xml文件中配置mysql-conne ...
 - 【转载】python-协程
			
转载自:廖雪峰的官方网站 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层 ...
 - Remove Duplicates from Sorted List II——简单的指针问题
			
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...
 - git rebase 过程中遇到冲突该怎么解决?
			
在执行git rebase 过程中经常遇到问题,此时有点慌,一般如何解决呢? 1.先将本地的冲突手动解决 2.执行下面命令 git add . git rebase --contine //继续re ...