0
ビュータイプがvTypeItemの場合、配列リストからすべての項目を返す必要がありますが、最初の項目を除くすべての項目が返されます。リストビューでは、あなたはgetCount()
方法でheader
ビューを占めていないよう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
うん、 'getView()'の中では常に 'mList.get(position - 1 ) 'オーバーフローしてはいけません。正確な例外を貼り付けて、それを追跡できるかどうかを確認しますか? – Vesko