[转]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" 但不加上这行就 ...
随机推荐
- tf.segment_sum和tf.unsorted_segment_sum理解实例
本文来自 guotong1988 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/guotong1988/article/details/77622790 import ...
- [Leetcode] Longest Palindromic Subsequence
Longest Palindromic Subsequence 题解 题目来源:https://leetcode.com/problems/longest-palindromic-subsequenc ...
- 内存不够清理方法,costdown项目时如果裁剪不下来,也可以参考
Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches 频繁的文件访问会导致系统的Cache使用量大增 $ free -m total used free shared ...
- 谁说运维用ELK没用?我就说很有用,只是你之前不会用【转】
1.安装JDK 1)登陆ORACLE官网 (http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html ...
- Serv-U设置允许用户更改密码【转】
最近,公司上了一套Serv-U10.5.0.6的ftp软件,应该是目前最新的版本了.上的第一天就遇到了一个问题,有领导发话了,他需要自己更改密码.找了N久才找到,分享一下. 点击管理界面的用户. 进入 ...
- mac下 mysql / nginx 问题总汇
"ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)&q ...
- vundle+vim8+php+xdebug
vundle 一开始容易被坑,vundle的运行方法是自己下载,不是自己下载,在安装上vundle后,直接修改~/.vimrc中,Plugin增加插件,然后运行PluginInstall即可安装 vi ...
- .htaccess教程:简介、访问控制、验证、目录浏览控制
一..htaccess简介 1.什么是.htaccess .htaccess是一个纯文本文件,里面存放着Apache服务器配置相关的一些指令,它类似于Apache的站点配置文件,如httpd.conf ...
- PlantUML——3.Graphviz的安装
官网:http://www.graphviz.org/Home.php 由于plantuml使用Graphviz来生成相关图形(只有序列图可以不依赖它),其它图形都需要, 因此得安装它,否则生成图 ...
- intellij idea 远程tomcat 调试
由于在服务器上远程调试风险较高,所以万不得已的情况下 不要这样做.可以本地调试好 再上传到服务器上. 1.关闭防火墙 启动Firewalld,及开机自启. # systemctl start fir ...