2012-09-19 63 views
4

我有一個數據庫,用於跟蹤用戶的提醒數據(提醒名稱,註釋,日期,時間等)。第一列是主鍵(_ID)。 ListView控件是從數據庫填充,它顯示了一組簡單的行與提醒的姓名(或名稱),像這樣:獲取選定的ListView項目的ID(使用SQLite數據庫填充數據)


倒垃圾。


步行的狗。


吃午飯。



現在我的問題是,如何讓我的應用程序來找出哪些提醒已被點擊?當單擊一行時,我需要從我的數據庫中找到它的主鍵(_ID列),並能夠檢索該行中的所有數據。

到目前爲止,我知道我需要使用onItemClick來檢測點擊。但是,我怎樣才能獲得被點擊的項目的主鍵值(_ID)?我當前的代碼如下所示:

final Context context = this; 

//DB Connectivity variables. 
protected RemindersDAO remindersDAO; 
protected SimpleCursorAdapter remindersCursorAdapter; 
public ListView viewRemindersListView; 

@SuppressWarnings("deprecation") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_local_reminders); 

    // Get rid of the app title in the action bar. 
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayShowTitleEnabled(false); 

    viewRemindersListView = (ListView) findViewById(R.id.listview_view_local_reminders); 

    remindersDAO = new RemindersDAO(this); 
    Cursor cursor = remindersDAO.all(this); 

    remindersCursorAdapter = new SimpleCursorAdapter(this, 
            R.xml.view_reminders_item_layout, 
            cursor, new String [] { RemindersDAO.NAME }, 
            new int[] { R.id.view_reminders_item_text }); 

    viewRemindersListView.setAdapter(remindersCursorAdapter); 
} 

@Override 
public void onItemClick(AdapterView<?> listView, View view, int position, long arg3) { 
    remindersDAO = new RemindersDAO(this); 
    Cursor cursor = remindersDAO.all(this); 

    int idColIndex = cursor.getColumnIndex(RemindersDAO._ID); 
    int rowId = cursor.getInt(idColIndex); 
} 

@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    // TODO Auto-generated method stub 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.activity_view_local_reminders, menu); 

    return super.onCreateOptionsMenu(menu); 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    //Set the classes that are called from each actionbar item. 
    switch (item.getItemId()) { 
     case R.id.local_reminders_actionbar_go_advanced: 
      Intent i=new Intent(this, AdvancedNewReminder.class); 
      startActivity(i); 
      return true; 
     case R.id.local_reminders_actionbar_simple_reminder: 
      Intent k = new Intent(this, QuickNewReminder.class); 
      startActivity(k); 
      return true; 

      /* case R.id.local_reminders_actionbar_google_tasks: 
      showGoogleTasksBetaDialog(); 
      return true; */ 

    } 
    return false; 
} 

@Override 
public void onBackPressed() { 
    return; 
} 

}

感謝您的幫助!

回答

5

onItemClick方法你可以看到第三參數 - long id是在數據庫中的id。所以,你只是簡單的獲取點擊的項目ID

@Override 
    public void onItemClick(AdapterView<?> listView, View view, int position, long arg3) { 
     Log.d("Clicked item id", " "+ arg3); 
    } 

,如果你希望其他領域,你應該得到點擊項目的光標

@Override 
    public void onItemClick(AdapterView<?> listView, View view, int position, long arg3) { 
    Cursor item= (Cursor) reminderCursorAdapter.getItem(position); 
Log.d("Clicked item field", " "+ item.getColum(your colum index)); 
    } 
相關問題