В методе getView, когда тип представления является vTypeItem, он должен возвращать весь элемент из моего списка массивов, но он возвращает все, кроме первого, и из-за этого в представлении списка отображается весь элемент, кроме первыйArrayAdapter getView не возвращает первый элемент
public class DrawerAdapter extends ArrayAdapter<DrawerCustomList> {
private static final int vTypeHeader = 0;
private static final int vTypeItem = 1;
ArrayList<DrawerCustomList> mList = new ArrayList<>();
public DrawerAdapter(Context context, ArrayList<DrawerCustomList> list) {
super(context,0,list);
mList = list;
}
@Override
public int getItemViewType(int position) {
return (position==0)?vTypeHeader:vTypeItem;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getCount() {
return mList.size();
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
View v = convertView;
MyViewHolder mViewHolder = null;
if (v==null){
if(type==vTypeItem){
v = LayoutInflater.from(getContext()).inflate(R.layout.drawer_single_item,parent,false);
mViewHolder= new MyViewHolder(v,type);
DrawerCustomList val = mList.get(position);
mViewHolder.itemImage.setImageResource(val.getmListImage());
mViewHolder.itemName.setText(val.getmListName());
}else {
v = LayoutInflater.from(getContext()).inflate(R.layout.drawer_header_layout,parent,false);
mViewHolder= new MyViewHolder(v,type);
}
}
v.setTag(mViewHolder);
return v;
}
public static class MyViewHolder{
TextView itemName,headerName,headerEmail;
CircleImageView headerPicture;
ImageView itemImage;
public MyViewHolder(View v,int type){
if(type==vTypeHeader){
headerName = (TextView)v.findViewById(R.id.drawerHeaderName);
headerEmail = (TextView)v.findViewById(R.id.drawerHeaderEmail);
headerPicture = (CircleImageView)v.findViewById(R.id.drawerCircleImageView);
}else {
itemName = (TextView) v.findViewById(R.id.drawerItemName);
itemImage = (ImageView)v.findViewById(R.id.drawerItemImage);
}
}
}
}
Выполнение этого: return mList.size() + 1; дает и исключает связанное исключение и делает положение == 1 не помогло, я все еще не получаю первый элемент списка – Nsnik
hmm, если в 'getView()' вы всегда делаете 'mList.get (позиция - 1) 'не должно быть переполнения. Вы хотите вставить точное исключение, чтобы мы могли его проследить? – Vesko