2012-11-03 68 views
0

我的應用程序的目標是顯示從SQLite數據庫中提取的模塊列表。如果用戶點擊一個特定的模塊,一個新的活動就開始了,這個新的活動給出了存儲在數據庫中與該特定模塊有關的更多信息Android:如何從光標適配器返回字符串

我希望做的是獲取行ID,然後將其發送給intent,但我不確定如何從遊標適配器中將行ID獲取到onClickListItem中?任何建議將不勝感激。

光標適配器

public class TestCursorAdapter extends CursorAdapter { 

    private LayoutInflater viewInflater; 
    public TestCursorAdapter(Context context, Cursor c, int flags) { 
     super(context, c, flags); 
     // TODO Auto-generated constructor stub 
     viewInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public void bindView(View v, Context context, Cursor c) 
    { 
     TextView text_modulecode = (TextView)v.findViewById(R.id.labelModuleCode); 
     TextView text_modulename = (TextView)v.findViewById(R.id.labelModuleName); 

     text_modulecode.setText(c.getString(c.getColumnIndex(database.KEY_MODULECODE))); 
     text_modulename.setText(c.getString(c.getColumnIndex(database.KEY_MODULENAME))); 

     String moduleId = c.getString(c.getColumnIndex(database.KEY_ROWID)); 
    } 

    @Override 
    public View newView(Context context, Cursor c, ViewGroup parent) { 
     View v = viewInflater.inflate(R.layout.listcourses, parent, false); 
     return v; 
    } 
} 

從主要活動

public void onListItemClick(ListView l, View v, int position, long id) 
     { 
      super.onListItemClick(l, v, position, id); 
      Intent intent = new Intent(this,ViewCourse.class); 

      //--->    <-- 
      intent.putExtra(TEST,moduleId); 
      startActivity(intent); 
     } 

回答

2

看看的onListItemClick

public void onListItemClick(ListView l, View v, int position, long id) 

ID的論點是有..這是自動與該行填充由光標適配器標識..

+0

哦對。但是,這是否意味着如果row_id 19被刪除,例如row_id 19不會出現在onListItemClick? – Calgar99

+0

如果您的列表視圖在刪除後仍然有行ID 19,則應在點擊項目時獲得ID 19。但是,您的適配器/列表視圖應該對從列表中刪除和刪除做出反應 – dymmeh

0
intent.putExtra(TEST, String.valueOf(id));