1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

为何ListView中getView被重复调用

作者:用户 来源:互联网 时间:2016-03-28 10:10:09

androidlistviewviewprivatetextviewandroid listviewandroid自定义viewandroid widget.android widgetinflateviewgroupconvertviewimportgetview()layoutinflater

为何ListView中getView被重复调用 - 摘要: 本文讲的是为何ListView中getView被重复调用, 我用ListView显示数据时,自定义了一个适配器(extends ArrayAdapter),然后重写了getView方法 ,现在出现一个问题,就是这个getView()方法被重复调用了,比如

我用ListView显示数据时,自定义了一个适配器(extends ArrayAdapter),然后重写了getView方法 ,现在出现一个问题,就是这个getView()方法被重复调用了,比如我的_data中有两条数据,但是 log.i("show",house.toString());这句却被执行了4次甚至更多,请问各位这是神马情况?

方法代码如下:

这是自定义的适配器:

package com.hb.puppet.utils;
import java.util.List;
    
import com.hb.puppet.activity.MetaData;
import com.hb.puppet.activity.R;
import com.hb.puppet.entity.House;
    
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
    
public class CustomCollectAdapter extends ArrayAdapter<House> {
    private static final String CLASSTAG = CustomCollectAdapter.class
            .getSimpleName();
    private ListView _listView;
    private int _resource;
    private List<House> _data;
    private LayoutInflater _inflater;
    private AsyncLoadImageTask _asyncloader;
    
    public CustomCollectAdapter(Context context, ListView listView,
            List<House> data) {
            
        super(context, 0, data);
            
        _resource = R.layout.list_item_collect;
        _data = data;
        _inflater = (LayoutInflater) context
                .getSystemService(context.LAYOUT_INFLATER_SERVICE);
        _asyncloader = new AsyncLoadImageTask();
        _listView = listView;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        CollectListItemViewCache viewCache = null;
        //
        final int index = position;
        //
        final ViewGroup p = parent;
    
        if (view != null) {
            viewCache = (CollectListItemViewCache) view.getTag();
        } else {
            view = _inflater.inflate(_resource,null);
            viewCache = new CollectListItemViewCache(view);
            view.setTag(viewCache);
        }
        // 房源数据
        House house = _data.get(position);
        System.out.println(house.toString());
            
        if (house != null) {
            //jpg/xxx.jpg
            String imageUrl = MetaData.HOST + house.getTitlePic();
            ImageView imageView = viewCache.getImageView();
            imageView.setTag(imageUrl);
            //异步加载图片
           new AsyncImageLoaderTask().execute(imageUrl,imageView);
            // 房源标题
            TextView houseTitle = viewCache.getHouseTitle();
            houseTitle.setText(house.getTitle());
            // 房源单价
            TextView housePrice = viewCache.getHousePrice();
            housePrice.setText(house.getSinglePrice() + "元/㎡");
            // 房源面积
            TextView houseArea = viewCache.getHouseArea();
            houseArea.setText(house.getArea() + "㎡");
            // 房源户型
            TextView houseUnit = viewCache.getHouseUnit();
            houseUnit.setText(house.getUnits());
            // 单项删除收藏房源
            Button delButton = viewCache.getDelButton();
            delButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    System.out.println("clicked");
                }
            });
        }
        return view;
    }
}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索android , listview , view , private , textview , android listview , android自定义view , android widget. , android widget , inflate , viewgroup , convertview , import , getview() layoutinflater listview 重复getview、getview重复调用、getview 防止重复调用、listview getview、listview getviewtype,以便于您获取更多的相关知识。

getview()-ANDROID simpadpter getview()

...convertView时不能显示数据库绑定的数据,但可以时时保存listview中edittext数据,两者有什么区别啊? 解决方案 Android-BaseAdapter中getView()android getView()参数含义android中GridView的Adapter的getView() 解决方案二...

Android ListView介绍及优化方案_Android

xml设计 - 主java package com.itheima.listview; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.TextureView; import android.view.View; import android.view.ViewGroup; import android.wi...

DIY 双向滑动列表

...一个 UITableView ,其中一些 cell 内会嵌套一个横向滑动的 ListView , ListView 中包含一些尺寸相同可点击的 ItemView,ItemView 中的图片内容需要从网络加载。 去掉一些跟本文内容无关的细枝末节,可以将原型抽象如下图: 蓝色的为...

Android前后端gson传输数据和listview获取position

...显示到前端的东西,又是另外一个问题了。 2、如何删除ListView中的某一项,之后更新该ListView并获取到该项的信息。遇到这个问题是在要实现收藏列表的删除时,收藏列表就是一个listview,在这个listview上有一个删除button,要在点...

仿微信、QQ聊天界面私信对话效果

...null; private LinkedList beans = null; /** 聊天message 格式 */ private ListView listView; /** 信息编辑框 */ private EditText edt; /** 信息发送按钮 */ private Button btnEnter; private CustomAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(...

前三篇
后三篇