[转]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" 但不加上这行就 ...
随机推荐
- nginx 配置代理某个路径
location /test{ proxy_pass http://localhost:8765/test; proxy_set_header Host $http_host; } 其中红色的那句可以 ...
- UML相关说明
在java开发中,有很多时候我们是在不断的处理类与类之间关系,其中这六种关系是:依赖.关联.聚合.组合.继承.实现. 它们的强弱关系是没有异议的:依赖 < 关联 < 聚合 < 组合& ...
- 保护眼睛(改变窗口颜色和Pdf背景颜色)
保护眼睛(改变窗口颜色和Pdf背景颜色) 昨天用了一个好朋友告诉我的保护眼睛的方法,效果很不错哦-- 今天告诉大家,一起爱护偶们明亮的眼睛吧!!! 首先需要改一下设置,如果常常用电脑很容易 ...
- 64_s1
SAASound-3.2-17.fc26.i686.rpm 13-Feb-2017 22:13 27650 SAASound-3.2-17.fc26.x86_64.rpm 13-Feb-2017 23 ...
- C++中stringstream样例
包含头文件 #include <sstream> 初始化可以使用 clear(). str( ) 赋值: 这里的clear方法,实际上是清空stringstream的状态(比如出错等),清 ...
- 全局应用程序类(Global.asax)
注:该部分参考的园区的“积少成多”的 <ASP.NET MVC中的Global.asax文件> . 1.Global.asax文件介绍 global.asax这个文件包含全局应用程序事件 ...
- 转:google测试分享-GTA
原文: http://blog.sina.com.cn/s/blog_6cf812be0102viuh.html 上一次分享了google测试分享-分层测试,有很多自动化测试的策略和实施都要有一个重点 ...
- P1084 疫情控制
Solution 二分答案, 尽量往上跳, 不能跳到根节点. 仍然能跳的拿出来.看剩下的点没有覆盖哪个? 贪心的分配一下. Code 70 #include<iostream> #incl ...
- 深度学习方法(十二):卷积神经网络结构变化——Spatial Transformer Networks
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 今天具体介绍一个Google ...
- Makefile的使用方法
转自:http://blog.chinaunix.net/uid-403164-id-2407545.html 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Wind ...