2016-11-26 2 views
0

Я заполнил свой ListView данными из моей таблицы базы данных.Извлечь данные из ListView

Как я могу получить данные из выбранного элемента?

Это, как я заполнить ListView:

SimpleCursorAdapter SimpleCursorAdapter; 
ListView listCategories = (ListView) findViewById(R.id.categoryList); 
categoryRepo categoryRepo = new categoryRepo(this); 
TextView textview= (TextView) findViewById(R.id.textView); 

private void displayCategories() 
{ 
    Cursor cursor = categoryRepo.getCategories(); 

    if (cursor == null) 
    { 
     textview.setText("Error"); 
     return; 
    } 
    if (cursor.getCount() == 0) 
    { 
     textview.setText("No categories."); 
     return; 
    } 

    String[] from = new String[] {category.KEY_CATEGORY_NAME}; 
    int[] to = new int[] {android.R.id.text1}; 

    SimpleCursorAdapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,cursor,from,to,0); 
    listCategories.setAdapter(SimpleCursorAdapter); 

} 

Я знаю, что я могу сделать это с помощью listCategories.setOnItemClickListener, но я не знаю, как. Спасибо за помощь.

Я хочу получить значение CATEGORY_NAME.

ответ

1
listCategories.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
      long arg3) { 
     // TODO Auto-generated method stub 

     Cursor cursor = (Cursor) SimpleCursorAdapter.getItem(position); 
    } 
}); 

How to get string from selected item of SimpleCursorAdapter?

+0

Хорошо, но как я могу получить эти данные в строке? Ничего, я понял это. Спасибо! Он работает лучше, чем я ожидал. (cursor.getString (cursor.getColumnIndex (category.KEY_ID))) – ktos1234

+0

Работает хорошо, но могу ли я попросить вас объяснить мне, что означают параметры в методе OnItemClick ?, Я имею в виду arg0, arg1 и arg3 ?? – ktos1234

+1

https://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html –

1

Попробуйте это:

listCategories.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      Cursor cursor = (Cursor) adapterView.getItemAtPosition(position); 
      if (cursor.moveToFirst()){ 
       String selectedValue = cursor.getString(cursor.getColumnIndex(category.KEY_CATEGORY_NAME)); 
       // do what ever you want here 
      } 
      cursor.close(); 
     } 
    }); 
+0

Я получил эту ошибку: java.lang.ClassCastException: android.database.sqlite.SQLiteCursor не может быть приведен к java.lang.String – ktos1234

+0

Отредактировано , посмотрите – rhari

Смежные вопросы