基础适配器错误
Error for Base Adapter
我的问题是当调用 AllMessageAdapter
这个 BaseAdapter
我设置 getCount()
是 1 但 getView(int i, View _view, ViewGroup viewGroup)
在 getCount
中总是调用 3 次。此 BaseAdapter
在 Fragment
中调用
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
您可以看到 here 对 Adapter.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;
}
}
我的问题是当调用 AllMessageAdapter
这个 BaseAdapter
我设置 getCount()
是 1 但 getView(int i, View _view, ViewGroup viewGroup)
在 getCount
中总是调用 3 次。此 BaseAdapter
在 Fragment
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
您可以看到 here 对 Adapter.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;
}
}