Почему ошибка при выполнении такого кода с SimpleCursorAdapter?

public class NotesFragment extends Fragment {

    DBHelper dbHelper;
    ListView lvData;
    String TABLE_NAME = "t_notes";
    SimpleCursorAdapter scAdapter;
    Cursor cursor;
    SQLiteDatabase database;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_notes, container, false);

        lvData = (ListView) getActivity().findViewById(R.id.listView);

        // создаем объект для создания и управления версиями БД
        dbHelper = new DBHelper(getActivity());

        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        // открываем подключение
        database = dbHelper.getReadableDatabase();

        //получаем данные из бд
        cursor =  database.query(TABLE_NAME, null, null, null, null, null, null);
//        getActivity().startManagingCursor(cursor);

        String[] from = new String[] { "f_name" };
        int[] to = new int[] { R.id.textName };

        // создаем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(getActivity(),
                R.layout.listview_item, cursor,
                from,
                to, 0);

        lvData.setAdapter(scAdapter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        cursor.close();
        dbHelper.close();

    }
}


Ошибка пропадает если изменяю cursor на null в
scAdapter = new SimpleCursorAdapter(getActivity(),
                R.layout.listview_item, null,
                from,
                to, 0);

и отключаю это
// lvData.setAdapter(scAdapter);

Но тогда оно собственно ничего и не отображает :)

Добавлял
//получаем данные из бд
        cursor =  database.query(TABLE_NAME, null, null, null, null, null, null);
        cursor.moveToFirst();
        Toast.makeText(getContext(), cursor.getString(cursor.getColumnIndex("f_name")), Toast.LENGTH_LONG).show();

Данные в поле есть.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
a_u_sinitsin
@a_u_sinitsin Автор вопроса
Нашел.

Изменил
lvData = (ListView) getActivity.findViewById(R.id.listView);

На
lvData = (ListView) rootView.findViewById(R.id.listView);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы