[转]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 ... 
