如何在simplecursoradapter中只选择一列并将其传递给另一个活动?

时间:2012-12-15 08:20:40

标签: android sqlite cursor simplecursoradapter

我的主要活动中有一个光标,用于查询数据库的两列,并使用简单的游标适配器显示它们。

private Cursor doQuery() {
return(db.getReadableDatabase().rawQuery("SELECT RestaurantID AS _id, RestaurantName, StoreNo "
+ "FROM RestaurantList ORDER BY RestaurantName", null));

}

public void onPostExecute() {
SimpleCursorAdapter adapter;

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
adapter=new SimpleCursorAdapter(this, R.layout.activity_all_restaurants,
        doQuery(), new String[] {
    RestaurantDB.colRestaurantName,
    RestaurantDB.colRestaurantStore },
    new int[] { R.id.title, R.id.value },
    0);
}
else {
adapter=new SimpleCursorAdapter(this, R.layout.activity_all_restaurants,
        doQuery(), new String[] {
    RestaurantDB.colRestaurantName,
    RestaurantDB.colRestaurantStore },
    new int[] { R.id.title, R.id.value });
}

setListAdapter(adapter);

}

我想要做的是,当用户点击某个特定项目时,会弹出另一个活动,为用户提供更多信息,这意味着我需要显示存储在许多其他列中的数据也是同一个项目。我的问题是如何做到这一点。我以为我应该使用onListItemClick,但我不知道如何将主活动中选择的项目与新活动相关联。

此外,在主要活动中,我在列表中有两个文本视图,分别显示colRestaurantName和colRestaurantStore。当我使用onListItemClick时,我怎样才能检索colRestaurantName?

我可以执行以下操作来检索位置,但我不知道如何在新活动中使用它:

@Override
public void onListItemClick(ListView parent, View v, int position,
    long id){
Cursor c = ((SimpleCursorAdapter)parent.getAdapter()).getCursor();
selection = String.valueOf(c.getPosition());
Intent i = new Intent(AllRestaurants.this, RestaurantsInfo.class);
i.putExtra("restaurantSelection", selection);
startActivity(i);      
}

感谢。

1 个答案:

答案 0 :(得分:0)

为listview实施onListItemClick并获取textview文本并将其发送到下一个活动:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
       TextView tv = (TextView)v.findViewById(R.id.title);
      String strcolRestaurantName=tv.getText().toString();

      Intent intent =new Intent(CurrentActivity.this,NextActivity.class);
      Bundle bundle = new Bundle();
      bundle.putString("RestaurantName",strcolRestaurantName);
      intent.putExtras(bundle);
      startActivity(intent);
}}

并在NextActivity中获取onTreate中的Intent:

Intent i = getIntent();
Bundle extras = i.getExtras();

String strRestaurantName = extras.getString("RestaurantName");