嗨,下面是我的baseadapter课程,但它不起作用!!
我尝试使用带有多个Row的ListView,我不明白我错在哪里 第一个布局只包含textView,第二个布局包含textview和imageView
public class CustomAdapter extends BaseAdapter {
public static final int TYPE_ODD = 0;
public static final int TYPE_EVEN = 1;
private Context context;
private List<ItemSlideMenu> lstItem;
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return lstItem.get(position).getType();
}
public CustomAdapter(Context context, List<ItemSlideMenu> lstItem) {
this.context = context;
this.lstItem = lstItem;
}
@Override
public int getCount() {
return lstItem.size();
}
@Override
public Object getItem(int position) {
return lstItem.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int listViewItemType = getItemViewType(position);
if (convertView == null) {
if (listViewItemType == TYPE_EVEN) {
convertView = View.inflate(context, R.layout.item_sliding_menu, null);
ImageView img = (ImageView) convertView.findViewById(R.id.item_img);
TextView tv = (TextView) convertView.findViewById(R.id.item_title);
ItemSlideMenu item = lstItem.get(position);
img.setImageResource(item.getImgId());
tv.setText(item.getTitle());
}
else if (listViewItemType == TYPE_ODD) {
convertView = View.inflate(context, R.layout.reseaux, null);
ImageView img = (ImageView) convertView.findViewById(R.id.item_img);
TextView tv = (TextView) convertView.findViewById(R.id.item_title);
ItemSlideMenu item = lstItem.get(position);
img.setImageResource(item.getImgId());
tv.setText(item.getTitle());
}
}
return convertView ;
}}
我有错误
05-27 16:05:45.297 25537-25537/com.example.getgpslocation E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.getgpslocation, PID: 25537
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
Fragment3.java
listSliding3 = new ArrayList<>();
//Add item for sliding list
listSliding3.add(new ItemSlideMenu("TRAM " , CustomAdapter.TYPE_ODD));
listSliding3.add(new ItemSlideMenu(R.drawable.ic_action_about,"Ligne1",CustomAdapter.TYPE_EVEN ));
listSliding3.add(new ItemSlideMenu(R.drawable.ic_action_about,"Ligne2",CustomAdapter.TYPE_EVEN ));
listSliding3.add(new ItemSlideMenu("BUS " , CustomAdapter.TYPE_ODD));
CustomAdapter customAdapter = new CustomAdapter(getActivity(),listSliding3);
listViewSliding3.setAdapter(customAdapter);
答案 0 :(得分:0)
添加时:
listSliding3.add(new ItemSlideMenu("TRAM " , CustomAdapter.TYPE_ODD));
"THAM "
值不是资源ID,因此您将NullPointerException
img.setImageResource(item.getImgId());
使用:
listSliding3.add(new ItemSlideMenu("", "TRAM ", CustomAdapter. TYPE_ODD ));
在适配器中不设置图像:
else if (listViewItemType == TYPE_ODD) {
convertView = View.inflate(context, R.layout.reseaux, null);
ImageView img = (ImageView) convertView.findViewById(R.id.item_img);
TextView tv = (TextView) convertView.findViewById(R.id.item_title);
ItemSlideMenu item = lstItem.get(position);
tv.setText(item.getTitle());
}