1

カーソル アダプタを使用しようとしていますが、 を呼び出すとヌル ポインタ例外が発生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;
}
}
4

1 に答える 1

0
 mGroupList.setAdapter(mGroupAdapter);

この行から、mGroupList が null であるか、mGroupAdapter が null です。

レイアウト ファイルで ListView ID を確認する必要があります

そうしないと

あなたの丸太猫を共有してください。問題をより明確に理解するのに役立ちます。

SQLiteDatabase db = this.getWritableDatabase();

getReadableDatabase(); を使用する必要があると思います。

ここでは、DB に対してのみクエリを実行しています。

于 2013-08-20T13:40:16.253 に答える