基础适配器错误

Error for Base Adapter

我的问题是当调用 AllMessageAdapter 这个 BaseAdapter 我设置 getCount() 是 1 但 getView(int i, View _view, ViewGroup viewGroup)getCount 中总是调用 3 次。此 BaseAdapterFragment

中调用

BaseAdapter 代码

public class AllMessageAdapter extends BaseAdapter {

    private static LayoutInflater inflater = null;

    public AllMessageAdapter(Context _context, JSONArray jobj, View.OnClickListener listener){
        inflater = (LayoutInflater)_context.getSystemService(_context.LAYOUT_INFLATER_SERVICE);

        Log.e("EEEEEEEEEEEE","NNNNNNNNNNNN");
    }

    @Override
    public int getCount() {
        return 1;
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

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

    @Override
    public View getView(int i, View _view, ViewGroup viewGroup) {
        Log.e("VALUE",""+i);

        View view = _view;
        if(view == null) {
            view = inflater.inflate(R.layout.all_message, null);
        }
        return view;
    }
}

我已通过 Log 检查,然后 Log.e("EEEEEEEEEEEE","NNNNNNNNNNNN"); 这是打印 1 次,但 Log.e("VALUE",""+i); 是打印 3 次。我不知道有什么问题。

您能否提供更多信息,例如布局 xml。 getView 在更改时可能会被多次调用,也许您将 height=wrap_content 设置为 listview

您可以看到 hereAdapter.getCount() 方法的不同内部调用。

但是您必须牢记,您无法控制此方法的调用方式。

它可以被多次调用,这就是为什么你必须尽可能快地保持它。

   public class AllMessageAdapter extends BaseAdapter {

private static LayoutInflater inflater = null;

public AllMessageAdapter(Context _context, JSONArray jobj, View.OnClickListener listener){
    inflater = (LayoutInflater)_context.getSystemService(_context.LAYOUT_INFLATER_SERVICE);

    Log.e("EEEEEEEEEEEE","NNNNNNNNNNNN");
}

@Override
public int getCount() {
    return 1;
}

@Override
public Object getItem(int i) {
    return i;
}

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

@Override
public View getView(int i, View _view, ViewGroup viewGroup) {
    Log.e("VALUE",""+i);

    View view = _view;
    if(view == null) {
        view = inflater.inflate(R.layout.all_message, null);
    }
    return view;
}
}