[英]Custom ArrayAdapter in ListFragment error
I get an error when I try to run the code for my app after trying to add a list view using a custom ArrayAdapter
in a class derived from ListFragment
. 尝试在使用从
ListFragment
派生的类中使用自定义ArrayAdapter
添加列表视图后尝试为我的应用程序运行代码时遇到错误。
Logcat: Logcat:
09-12 02:21:27.818 31354-31354/com.example.anas.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.anas.myapplication, PID: 31354
java.lang.NullPointerException
at com.example.anas.myapplication.adapter.MaalomaListAdapter.getView(MaalomaListAdapter.java:74)
The error is produced in the following line the method getView(): 该错误在方法getView()的以下行中产生:
viewHolder.ivMaaloma.setImageResource(R.drawable.maaloma_bg_1);
viewHolder.tvMaaloma.setText(maaloma.getText());
To get a clearer idea of what I'm trying to do, this is my custom ArrayAdapter
class (I marked error line with a comment): 为了更清楚地了解我要执行的操作,这是我的自定义
ArrayAdapter
类(我在注释中标记了错误行):
MaalomaListAdapter.java: MaalomaListAdapter.java:
public class MaalomaListAdapter extends ArrayAdapter<Maaloma> {
private Context context;
private int resource;
private List<Maaloma> maalomaList;
public MaalomaListAdapter(Context context, int resource, List<Maaloma> maalomaList) {
super(context, resource, maalomaList);
this.context = context;
this.resource = resource;
this.maalomaList = maalomaList;
}
public static int getResId(String resName, Class<?> c) {
try {
Field idField = c.getDeclaredField(resName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null) {
// inflate item layout
LayoutInflater inflater = ((Activity) this.context).getLayoutInflater();
convertView = inflater.inflate(this.resource, parent, false);
// init view holder
viewHolder = new ViewHolder();
viewHolder.ivMaaloma = (ImageView) convertView.findViewById(R.id.iv_maaloma_bg);
viewHolder.tvMaaloma = (TextView) convertView.findViewById(R.id.tv_maaloma);
convertView.setTag(viewHolder);
} else {
// recycling already inflated views
viewHolder = (ViewHolder) convertView.getTag();
}
Maaloma maaloma = maalomaList.get(position);
//int imageResId = getResId(maaloma.getImage(), Drawable.class);
/**** ERROR COMES FROM THE FOLLOWING TWO LINES (WHICHEVER WAS FIRST) *****/
viewHolder.ivMaaloma.setImageResource(R.drawable.maaloma_bg_1);
viewHolder.tvMaaloma.setText(maaloma.getText());
return convertView;
}
private static class ViewHolder {
private ImageView ivMaaloma;
private TextView tvMaaloma;
}
}
I suppose the error resides in this class only but I'm ready to post more code upon request. 我想错误仅存在于此类中,但我准备根据请求发布更多代码。 Appreciate the time and effort guys.
感谢时间和精力的家伙。
What is the layout you using during error? 错误期间使用的布局是什么?
It is likely that the layout you used do not have R.id.iv_maaloma_bg
or R.id.tv_maaloma
您使用的布局可能没有
R.id.iv_maaloma_bg
或R.id.tv_maaloma
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.