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

      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.   
  • 相关阅读:
    poj3718 Facer's Chocolate Dream
    codeforces 917D Stranger Trees
    uoj#349 【WC2018】即时战略
    bzoj5153 [Wc2018]州区划分
    bzoj5152 [Wc2018]通道
    loj2001[SDOI2017]树点染色
    loj2000[SDOI2017]数字表格
    Atcoder arc092
    bzoj4826[hnoi2017]影魔
    bzoj4827 [hnoi2017]礼物
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4836622.html
Copyright © 2020-2023  润新知