Как получить заголовок из пункта меню ящика навигации

Я пытаюсь создать ящик навигации, получая записи из базы данных и показывая их в левом ящике.

Делая следующее, я могу сделать это успешно, но проблема в том, что когда щелкают элемент меню в ящике навигации, я хочу получить его название. Но я только получаю положение этого.

DrawerLayout  mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

List<DataItems> myTest = myDbAdapter.getValuesFromDb(); // method in DbAdapter class 
                                                       // to get records from db.

// Pass the data to ListView adapter
MyNavigationDrawerAdapter adapter = new MyNavigationDrawerAdapter(
   this, 
   R.layout.drawer_listview_item, 
   myTest);

// Set the adapter for the list view
mDrawerList.setAdapter(adapter);

// set the item click listener
mDrawerList.setOnItemClickListener(new NavigationDrawerItemClickListener());

// navigation drawer click listener
private class NavigationDrawerItemClickListener implements ListView.OnItemClickListener 
{
   @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
   {
      Log.i("Position", "" + position); // prints the position successfully

      Log.i("Value", "" + myTest.get(position).getTitle()); // prints null
   }
}

Не могли бы вы рассказать мне, почему этот myTest.get(position).getTitle() имеет значение null. Что мне здесь не хватает?


person pro_newbie    schedule 29.09.2014    source источник
comment
почему бы вам не создать массив строк и не выбрать значения в соответствии с позицией   -  person SMR    schedule 29.09.2014
comment
попробуйте отладить свой код для значений в myTest   -  person Pr38y    schedule 29.09.2014
comment
@SMR Что вы хотите сказать, что я должен попробовать сделать это: String[] array = new String[...] вместо того, чтобы делать List‹DataItems› myTest?   -  person pro_newbie    schedule 29.09.2014
comment
myTest.get(position).getTitle() имеет значение null, потому что вы не установили заголовок в своем классе Model. Напишите код модели.   -  person Bharath Mg    schedule 29.09.2014
comment
@BharathMg, если я попробую это myTest.get(position), я все равно получу нулевое значение.   -  person pro_newbie    schedule 29.09.2014
comment
Затем, пожалуйста, проверьте, пуст ли ваш myTest. Или если какое-либо значение существует для позиции.   -  person Bharath Mg    schedule 29.09.2014


Ответы (2)


В вашем onClickListener попробуйте:

 public void onItemClick(AdapterView <?> parent, View view, int position, long id){

  DataItems dataItem = adapter.getItem(position);
  String mString = dataItem.getTitle();

 }
person AndroidEnthusiast    schedule 29.09.2014

использовать

List<DataItems> myTest = new List<DataItems>(myDbAdapter.getValuesFromDb());

вместо использования

List<DataItems> myTest = myDbAdapter.getValuesFromDb();
person SMR    schedule 29.09.2014
comment
Это приводит к ошибке: ArrayList‹DataItems› не может быть преобразован в тип - person pro_newbie; 29.09.2014
comment
извините, измените его на то, что возвращает ваш myDBAdapter.getValuesFromDB. Я думаю, это List‹DataItems› - person SMR; 29.09.2014