码迷,mamicode.com
首页 > 移动开发 > 详细

[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件

时间:2015-09-24 22:50:52      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:

 

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;这样可以牢牢抓住每次点击的响应位置;最好把控件集成到类中。

    1. package logic;  
    2.   
    3. import java.util.HashMap;  
    4. import java.util.List;  
    5. import java.util.Map;  
    6.   
    7. import logic.PlaceAdapter.ViewHolder;  
    8.   
    9. import org.guiji.BigPictureActivity;  
    10. import org.guiji.ClassUserListActivity;  
    11. import org.guiji.CommentMoodActivity;  
    12. import org.guiji.R;  
    13. import org.guiji.UserHomeActivity;  
    14.   
    15. import support.ClassUserListImageDownloadTask;  
    16. import support.ImageDownloadTask;  
    17. import support.SystemConstant;  
    18. import android.content.Context;  
    19. import android.content.Intent;  
    20. import android.text.Html;  
    21. import android.view.LayoutInflater;  
    22. import android.view.View;  
    23. import android.view.ViewGroup;  
    24. import android.view.View.OnClickListener;  
    25. import android.widget.BaseAdapter;  
    26. import android.widget.ImageView;  
    27. import android.widget.TextView;  
    28.   
    29. public class ClassUserListAdapter extends BaseAdapter {  
    30.     HashMap<Integer,View> lmap = new HashMap<Integer,View>();  
    31.     private LayoutInflater mInflater=null;  
    32.     private List<Map<String, String>> mData=null;  
    33.     private ClassUserListImageDownloadTask imgtask=null;  
    34.     private Context context;  
    35.     public List<Map<String, String>> getmData() {  
    36.         return mData;  
    37.     }  
    38.   
    39.     public void setmData(List<Map<String, String>> mData) {  
    40.         this.mData = mData;  
    41.     }  
    42.     public ClassUserListAdapter(Context context){  
    43.         this.mInflater = LayoutInflater.from(context);  
    44.         this.context=context;  
    45.     }  
    46.     @Override  
    47.     public int getCount() {  
    48.         return mData.size();  
    49.     }  
    50.   
    51.     @Override  
    52.     public Object getItem(int position) {  
    53.         return mData.get(position);  
    54.     }  
    55.   
    56.     @Override  
    57.     public long getItemId(int position) {  
    58.         return position;  
    59.     }  
    60.   
    61.     @Override  
    62.     public View getView(int position, View convertView, ViewGroup parent) {  
    63.         ClassUserListViewHolder holder = null;  
    64.         if (lmap.get(position)==null) {  
    65.             imgtask=new ClassUserListImageDownloadTask();  
    66.               
    67.             convertView = mInflater.inflate(R.layout.classuserlist_item, null);  
    68.             holder=new ClassUserListViewHolder();   
    69.               
    70.             holder.classuserlist_item_userlogo=(ImageView)convertView.findViewById(R.id.classuserlist_item_userlogo);  
    71.             holder.classuserlist_item_username=(TextView)convertView.findViewById(R.id.classuserlist_item_username);  
    72.             holder.classuserlist_item_statuscontent=(TextView)convertView.findViewById(R.id.classuserlist_item_statuscontent);  
    73.             holder.classuserlist_item_idfans1=(TextView)convertView.findViewById(R.id.classuserlist_item_idfans1);  
    74.             holder.classuserlist_item_idfans2=(TextView)convertView.findViewById(R.id.classuserlist_item_idfans2);  
    75.             holder.classuserlist_item_idmood=(TextView)convertView.findViewById(R.id.classuserlist_item_idmood);  
    76.             holder.classuserlist_item_idhuoyuevalue=(TextView)convertView.findViewById(R.id.classuserlist_item_idhuoyuevalue);  
    77.             holder.classuserlist_item_msgpic=(ImageView)convertView.findViewById(R.id.classuserlist_item_msgpic);  
    78.             holder.classuserlist_item_msgcontent=(TextView)convertView.findViewById(R.id.classuserlist_item_msgcontent);  
    79.             holder.classuserlist_item_idtimeplace=(TextView)convertView.findViewById(R.id.classuserlist_item_idtimeplace);  
    80.             holder.classuserlist_item_classbutton=(ImageView)convertView.findViewById(R.id.classuserlist_item_classbutton);  
    81.               
    82.             lmap.put(position, convertView);  
    83.             convertView.setTag(holder);  
    84.               
    85.             holder.classuserlist_item_username.setText((String)mData.get(position).get("username"));  
    86.             if(mData.get(position).get("idstatuscontent")!=null){  
    87.                 holder.classuserlist_item_statuscontent.setText((String)mData.get(position).get("idstatuscontent"));  
    88.                 holder.classuserlist_item_statuscontent.setVisibility(0);  
    89.             }  
    90.             if(mData.get(position).get("idfans1")!=null){  
    91.                 holder.classuserlist_item_idfans1.setText((String)mData.get(position).get("idfans1"));  
    92.                 holder.classuserlist_item_idfans1.setVisibility(0);  
    93.             }  
    94.             if(mData.get(position).get("idfans2")!=null){  
    95.                 holder.classuserlist_item_idfans2.setText((String)mData.get(position).get("idfans2"));  
    96.                 holder.classuserlist_item_idfans2.setVisibility(0);  
    97.             }  
    98.               
    99.             holder.classuserlist_item_idmood.setText((String)mData.get(position).get("idmood"));  
    100.             if(mData.get(position).get("idhuoyuevalue").length()>=4)  
    101.                 holder.classuserlist_item_idhuoyuevalue.setText("活跃值"+"("+mData.get(position).get("idhuoyuevalue").substring(0, 4)+")");  
    102.             else  
    103.                 holder.classuserlist_item_idhuoyuevalue.setText("活跃值"+"("+mData.get(position).get("idhuoyuevalue")+"0"+")");  
    104.               
    105.             if(mData.get(position).get("idmsgcontent")!=null){  
    106.                 holder.classuserlist_item_msgcontent.setText((String)mData.get(position).get("idmsgcontent"));  
    107.                 holder.classuserlist_item_msgcontent.setVisibility(0);  
    108.             }  
    109.             if(mData.get(position).get("idtime")!=null){  
    110.                 holder.classuserlist_item_idtimeplace.setText((String)mData.get(position).get("idtime")+"  "+(String)mData.get(position).get("idplace"));  
    111.                 holder.classuserlist_item_idtimeplace.setVisibility(0);  
    112.             }  
    113.               
    114.             String temp=SystemConstant.baseURLNone+mData.get(position).get("userlogo")+","+  
    115.             SystemConstant.baseURLNone+mData.get(position).get("idmsgpic");  
    116.             imgtask.execute(temp,holder);  
    117.               
    118.         }else {  
    119.             convertView = lmap.get(position);  
    120.             holder = (ClassUserListViewHolder)convertView.getTag();  
    121.         }  
    122.           
    123.         final int currentPosition=position;  
    124.         holder.classuserlist_item_userlogo.setOnClickListener(new OnClickListener() {  
    125.               
    126.             @Override  
    127.             public void onClick(View v) {  
    128.                 MainService.guiji.setCurrentURL(SystemConstant.baseURL+mData.get(currentPosition).get("userLink"));  
    129.                 Intent it=new Intent(context,UserHomeActivity.class);  
    130.                 context.startActivity(it);  
    131.             }  
    132.         });  
    133.           
    134.         holder.classuserlist_item_username.setOnClickListener(new OnClickListener() {  
    135.               
    136.             @Override  
    137.             public void onClick(View v) {  
    138.                 MainService.guiji.setCurrentURL(SystemConstant.baseURL+mData.get(currentPosition).get("userLink"));  
    139.                 Intent it=new Intent(context,UserHomeActivity.class);  
    140.                 context.startActivity(it);  
    141.             }  
    142.         });  
    143.         holder.classuserlist_item_msgpic.setOnClickListener(new OnClickListener() {  
    144.               
    145.             @Override  
    146.             public void onClick(View v) {  
    147.                 MainService.guiji.setCurrentURL(SystemConstant.baseURLNone+mData.get(currentPosition).get("idmsgpic"));  
    148.                 Intent it=new Intent(context,BigPictureActivity.class);  
    149.                 context.startActivity(it);  
    150.             }  
    151.         });  
    152.         holder.classuserlist_item_idfans1.setOnClickListener(new OnClickListener() {  
    153.               
    154.             @Override  
    155.             public void onClick(View v) {  
    156.                 MainService.guiji.deleteReply(SystemConstant.baseURL+mData.get(currentPosition).get("idfans1link"));  
    157.                 ((ClassUserListActivity) context).createTask();  
    158.             }  
    159.         });  
    160.         holder.classuserlist_item_idfans2.setOnClickListener(new OnClickListener() {  
    161.               
    162.             @Override  
    163.             public void onClick(View v) {  
    164.                 MainService.guiji.deleteReply(SystemConstant.baseURL+mData.get(currentPosition).get("idfans2link"));  
    165.                 ((ClassUserListActivity) context).createTask();  
    166.             }  
    167.         });  
    168.           
    169.         holder.classuserlist_item_classbutton.setOnClickListener(new OnClickListener() {  
    170.               
    171.             @Override  
    172.             public void onClick(View v) {  
    173.                 String temp=SystemConstant.baseURL+mData.get(currentPosition).get("idcommentlink");  
    174. //              MainService.guiji.setCurrentURL(temp);  
    175.                 MainService.guiji.setPageType(4);  
    176.                 MainService.guiji.setBackURL(temp);  
    177.                 Intent it=new Intent(context,CommentMoodActivity.class);  
    178.                 context.startActivity(it);  
    179.             }  
    180.         });  
    181.           
    182.         return convertView;  
    183.     }  
    184.     public class ClassUserListViewHolder{  
    185.         public ImageView classuserlist_item_userlogo;  
    186.         public TextView classuserlist_item_username;  
    187.         public TextView classuserlist_item_statuscontent;  
    188.         public TextView classuserlist_item_idfans1;  
    189.         public TextView classuserlist_item_idfans2;  
    190.         public TextView classuserlist_item_idmood;  
    191.         public TextView classuserlist_item_idhuoyuevalue;  
    192.         public ImageView classuserlist_item_msgpic;  
    193.         public TextView classuserlist_item_msgcontent;  
    194.         public TextView classuserlist_item_idtimeplace;  
    195.         public ImageView classuserlist_item_classbutton;  
    196.     }  
    197.   

[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件

标签:

原文地址:http://www.cnblogs.com/ZhuRenWang/p/4836622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!