2016-08-25 14 views
0

これは重複した質問と呼ばれるかもしれませんが、私のケースは非常にユニークです。基本的に私は私のカーソルIDを取得する方法が必要です、それは私のテーブルのカスタムアダプタに解析されたデータベースからのIDです。そのリストをクリックすると、正しいIDがトーストされます。ここに私がこれまで持っていたものがあります...カーソルからCustomAdapterへのデータベースIDを取得する(Android)

私はcursoradapterではなくcustomadapterを使用したいと考えています。

//Get Categories from database 
    final Cursor cursor = dbHandler.getCategories(0); 
    if (cursor != null) { 
     if(cursor.moveToFirst()){ 
      do{ 
       Categories categories = new Categories(); 
       categories.set_id(cursor.getInt(0)); 
       categories.set_categoryname(cursor.getString(2)); 
       categories.set_categoriescaption(cursor.getString(3)); 
       //list.add(cursor.getString(cursor.getColumnIndex(dbHandler.COLUMN_CATEGORY_NAME))); 
       categoriesList.add(categories); 

      }while (cursor.moveToNext()); 
     } 
     cursor.close(); 
    } 

カーソル私はボタンなしpostion IDをクリックすると、テーブルの実際のidを示したことにしたい私のSQLiteデータベース

listView = (ListView) view.findViewById(R.id.categories); 

    adapter = new CategoryAdapter(view.getContext(), R.layout.cursor_row, categoriesList); 
    listView.setAdapter(adapter); 

    listView.setOnItemClickListener(
      new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

        String cid = String.valueOf(id); 
        Toast.makeText(view.getContext(), cid , Toast.LENGTH_SHORT).show(); 

からデータを取得します。実際のIDは1から始まるはずですが、ここでは0になります。ヘルプは高く評価されます。ありがとうございました

答えて

0

インターネットで多くの熟考の後、私は今多くの意味がある解決策を見つけました。

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

idはonclickアダプタビューから取得しました。私はそれがオーバーライドされていない場合、デフォルトの位置に設定されることを発見しました。だから私は私のカスタムアダプターで私のIDを渡し、私のIDを見ることができました。

@Override 
public long getItemId(int position) { 
    return data.get(position).Id; 
} 
関連する問題