My problem is when call AllMessageAdapter
this BaseAdapter
I am set getCount()
is 1 but getView(int i, View _view, ViewGroup viewGroup)
is call always 3 times in getCount
. This BaseAdapter
is called in a Fragment
BaseAdapter Code
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;
}
}
I have Check through Log
then Log.e("EEEEEEEEEEEE","NNNNNNNNNNNN");
this is print 1 time but Log.e("VALUE",""+i);
is print 3 time. I don't no what is problem.
You can see here the different internal calls to the Adapter.getCount()
method.
But you must keep in mind that you have no control on how this method is gonna be called.
It can be called multiple times and that's why you have to keep it as fast as possible.
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;
}
}