【问题标题】:Adapter getView is called multiple times多次调用适配器getView
【发布时间】:2014-12-09 15:05:46
【问题描述】:

我的 getView 被多次调用。我设置了listview的fill_parent宽度和fill_parent高度,但它不起作用。 见适配器代码:

public class CustomAdapter extends BaseAdapter implements OnCheckedChangeListener {
private Context ctx;
public ArrayList<Objects> listToSend;
private ViewHolder holder;
private TextView tv;
private LayoutInflater mInflater;


public AdapterOrderType(Context context, ArrayList<Objects> list) {
    this.ctx = context;
    this.listToSend = list;
    mInflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    return  listToSend.size();
}

@Override
public Object getItem(int position) {
    return listToSend.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

static class ViewHolder {
    private TextView tv;
    private LinearLayout ll;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    Object object = objects.get(position);

     ViewHolder holder = null;
     if (convertView == null) {
         convertView = mInflater.inflate(R.layout.item_objects, null);
         holder = new ViewHolder();

        holder.tv = (TextView)convertView.findViewById(R.id.objname);

         convertView.setTag(holder);
     } else {
         holder = (ViewHolder)convertView.getTag();
     }
    Log.e("called times: ",String.valueOf(position)); 
    return convertView;
}

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//  }
  }

我的日志:

调用次数:0

调用次数:1

调用次数:2

调用次数:0


我的适配器绘制的列表视图项目数量错误,这是个问题

【问题讨论】:

标签: android listview


【解决方案1】:

当然会。适配器中的getView 方法会为屏幕上可见的列表中的每一行调用,因此显然会被多次调用。

【讨论】:

    猜你喜欢
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2013-04-21
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多