Android PullToRefreshListView在华为mate8,上出现数据重复

nihaohell 发布于 2016/05/10 12:00
阅读 524
收藏 0
代码如下:
public class HeadBigPicListAdapter extends BaseAdapter{
   private List<HeadEntity> list;
   private Context context;
   private DisplayImageOptions options=Options.getListOptions();
   private static final int TYPE_COUNT=2;
   private static final int TYPE_SMALL=0;
   private static final int TYPE_BIG=1;
   private int currentType;//当前item类型
    public HeadBigPicListAdapter(List<HeadEntity> list, Context context) {
    super();
    this.list = list;
    this.context = context;

    
}

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        int count=0;
        if(list!=null)
            count=list.size();
        return count;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    @Override
        public int getItemViewType(int position) {
            // TODO Auto-generated method stub
        
        if("3543".equals(list.get(position).getColumn())){
            return TYPE_BIG;
        }else{
            return TYPE_SMALL;
        }
        
        
        }
    @Override
        public int getViewTypeCount() {
            // TODO Auto-generated method stub
            return TYPE_COUNT;
        }
 
    @Override
    public View getView(int position, View converView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View smallView=null;
        View bigView=null;
        HeadEntity entity=list.get(position);
        currentType=getItemViewType(position);
        
        if(currentType==TYPE_SMALL){
            SmallViewHolder smallHolder=null;
            if(converView==null){
                smallHolder=new SmallViewHolder();
                smallView=LayoutInflater.from(context).inflate(R.layout.item_head, null);
                   smallHolder.smallTitle=(TextView)smallView.findViewById(R.id.item_head_title);
                smallHolder.samllauthor=(TextView)smallView.findViewById(R.id.item_head_nickname);
                smallHolder.samlltime=(TextView)smallView.findViewById(R.id.item_head_create_time);
                smallHolder.smallreply=(TextView)smallView.findViewById(R.id.item_head_replies);
                smallHolder.smallpv=(TextView)smallView.findViewById(R.id.item_head_source);
                smallHolder.smallPic=(ImageView)smallView.findViewById(R.id.item_head_image);
                smallView.setTag(smallHolder);
                converView=smallView;
            }else{
                smallHolder=(SmallViewHolder) converView.getTag();
            }
                smallHolder.smallTitle.setText(entity.getTitle());
                smallHolder.samllauthor.setText(entity.getNickname());
                smallHolder.samlltime.setText(StringUtils.friendly_time3( entity.getCreateTime()));
                smallHolder.smallreply.setText(entity.getDescription());
                smallHolder.smallpv.setText(entity.getSource());
                 String wapThumb =entity.getWapThumb();
                 if(wapThumb.equals("")||wapThumb.equals("http://image.c114.net/cover/a0.gif")){
                     smallHolder.smallPic.setVisibility(View.GONE);
                }else{
                    smallHolder.smallPic.setVisibility(View.VISIBLE);
                    smallHolder.smallPic.setScaleType(ImageView.ScaleType.FIT_CENTER);
                    
                        
                        try {
                            ImageLoader.getInstance().displayImage(wapThumb, smallHolder.smallPic,options);
                        } catch (Exception e){
                            Log.i("TAG", "图片无法加载,找不到路径,直接不现实");
                            smallHolder.smallPic.setVisibility(View.GONE);
                        }
                }
            
        }else if(currentType==TYPE_BIG){
            BigViewHolder bigViewHolder=null;
            if(converView==null){
                bigViewHolder=new BigViewHolder();
                bigView=LayoutInflater.from(context).inflate(R.layout.item_head_liebiao_list, null);
                
                bigViewHolder.bigauthor=(TextView)bigView.findViewById(R.id.c114_listview_item_author);
                bigViewHolder.bigtime=(TextView)bigView.findViewById(R.id.c114_listview_item_infotime);
                bigViewHolder.bigTitle=(TextView)bigView.findViewById(R.id.c114_listview_item_title);
                bigViewHolder.bigreply=(TextView)bigView.findViewById(R.id.c114_listview_item_info_pinlun);
                bigViewHolder.bigpv=(TextView)bigView.findViewById(R.id.pv);
                bigViewHolder.bigPic=(ImageView)bigView.findViewById(R.id.c114_listview_item_img);
                bigView.setTag(bigViewHolder);
                converView=bigView;
            }else{
                bigViewHolder=(BigViewHolder) converView.getTag();
            }
            bigViewHolder.bigTitle.setText(entity.getTitle());
            bigViewHolder.bigauthor.setText(entity.getNickname());
             bigViewHolder.bigtime.setText(StringUtils.friendly_time3(entity.getCreateTime()));
             bigViewHolder.bigreply.setText(entity.getDescription());
             bigViewHolder.bigpv.setText(entity.getSource());
            String imgUrl=entity.getWapThumb();
            if(imgUrl.equals("")){
                bigViewHolder.bigPic.setVisibility(View.GONE);
            }else
            {
                bigViewHolder.bigPic.setVisibility(View.VISIBLE);
            bigViewHolder.bigPic.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            
             try {
                 ImageLoader.getInstance().displayImage(imgUrl, bigViewHolder.bigPic,options);
             } catch (Exception e){
                 Log.i("", "图片无法加载,找不到路径,直接不现实");
                 bigViewHolder.bigPic.setVisibility(View.GONE);
             }
            }
        }
        return converView;
    }

    class SmallViewHolder{
        TextView smallTitle,samllauthor,samlltime,smallreply,smallpv;
        ImageView smallPic;
        
    }

    class BigViewHolder{
        TextView bigTitle,bigauthor,bigtime,bigreply,bigpv;
        ImageView bigPic;
    }
        
 
}
在坚果手机上可以正常运行但在华为mate8上开始没事,加载一会就会出现一条数据重复,有时直接闪退,求助,由于不是本人手机,没有错误日志,希望遇到过相同情况的朋友帮忙
加载中
0
sucho
sucho

你这应该是listview中两个不同的item类型进行显示.   你先根据position判断type然后进行布局的家加载是没有问题的,但是后面接着的convertview判断 应该是有问题的  有可能convertview不等null 但是是另外一个type的 这样就会有问题 我觉得你最好自己处理两种convertview的缓存 .

还有在adapter中的内部内最好用private static ... 

nihaohell
nihaohell
谢谢您了,我找到错误出了,只顾上拉的把下拉忽略了,
nihaohell
nihaohell
确实没考虑另一个类型,主要是下拉刷新的时候会崩溃,而且会多出一个数据
返回顶部
顶部