【发布时间】:2013-08-21 11:29:15
【问题描述】:
我正在尝试使用光标适配器,但是当我调用setAdapter 时出现空指针异常,我无法弄清楚问题所在。代码如下:
主要片段:
public class GroupsFragment extends Fragment {
private ListView mGroupList;
private GroupAdapter mGroupAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View rootView = inflater.inflate(R.layout.fragment_shedule, container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
GroupsDB databaseHelper = new GroupsDB(getActivity());
mGroupList = (ListView) getView().findViewById(R.id.listGroup);
Cursor cursor = databaseHelper.getGroupList();
mGroupAdapter = new GroupAdapter(getActivity(), cursor, true);
mGroupList.setAdapter(mGroupAdapter); //<---NULL POINTER EXCEPTION
databaseHelper.close();
Button buttonSend = (Button) getView().findViewById(R.id.AddGroupButton);
buttonSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AddGroup();
}
});
}
private void AddGroup() {
}
}
返回光标以便仅具有列 GI.GROUP_NAME 的名称的函数
public Cursor getGroupList() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query(true, GI.TABLE_NAME,
new String[] { GI._ID , GI.GROUP_NAME },
null, null,
GI.GROUP_NAME , null, null, null);
db.close();
return cursor;
}
最后是自定义适配器:
public class GroupAdapter extends CursorAdapter {
public GroupAdapter(Context context, Cursor c, Boolean f) {
super(context, c, f);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView name = (TextView)view.findViewById(R.id.groupItem);
name.setText(cursor.getString(1));
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.group_list_item, parent, false);
return v;
}
}
【问题讨论】:
-
onActivityCreated 可能在 onCreateView 之前调用
-
看起来
mGroupList可能是null。检查您是否拥有正确的id -
fragment_shedule 是否包含 listGroup?
-
提供日志并提供带有行号的快照。
-
@codeMagic 'id' 是正确的
标签: java android sqlite nullpointerexception