2012-01-21 67 views
0

我想打開一個活動取決於用戶在ListView上選擇的值。如果用戶選擇一個具有type1值的列表項,它應該打開acitvity1(activity1.class),如果列表項屬於type2,它應該打開acitvity2(activity2.class)。我仍然想獲得id值。 有人可以幫助我在列表中獲得多個值。 (不僅僅是id值)還是解決這個問題的方法。如何在android listview選擇中獲取兩個以上的值

以下是我的代碼;

  @Override 
     protected void onListItemClick(ListView l, View v, int position, long id) { 
      super.onListItemClick(l, v, position, id); 

      //TODO:need to assign the value here 
      String mEdit = .......; 

      if (mEdit.equals("type1")){ 
       Intent i = new Intent(this, activity1.class); 
       i.putExtra(DbAdapter.KEY_ROWID, id); 
       startActivityForResult(i, ACTIVITY_EDIT); 
      }else if (mEdit.equals("type2")){ 
       Intent i = new Intent(this, activity2.class); 
       i.putExtra(KEY_ROWIDA, id); 
       startActivityForResult(i, ACTIVITY_EDIT); 
      }; 

      } 

在此先感謝

回答

0

您可以在ListActivity調用getListView()。getItemAtPosition(INT),並給它的列表項的索引。然後,您可以將其轉換爲任何支持對象,並對該對象執行任何操作。從我自己的應用程序的一個例子:

ForumDescriptor selected = (ForumDescriptor) getListView().getItemAtPosition(position); 

ForumDescriptor有關於個人subforum的(這是一個論壇查看器網站)的一些信息。每一個都是我列表中的一個項目。

+0

感謝您的幫助。我是新來這... \t \t \t \t \t \t \t \t \t \t我應該使用它後super.onListItemClick(L,V,位置,IDA); @override \t \t \t保護無效onListItemClick(ListView的升,視圖V,INT位置,長IDA){ \t \t \t \t super.onListItemClick(L,V,位置,IDA); \t \t \t \t \t \t \t \t showToast( 「ID =」 + getListView()getItemAtPosition(1)+」「); – SAN

+0

我覺得你有點困惑。名爲selected的ForumDescriptor對象有一個我可以從中獲取URL的方法。在你的情況下,你可能希望每個列表項都是一個Object,它啓動Activity或者返回要在startActivityForResult()中使用的類 –

+0

非常感謝。它正在工作。我使用後\t \t \t @覆蓋 \t \t \t保護無效onListItemClick(ListView的L,視圖V,INT位置,長IDA){ \t \t \t \t super.onListItemClick(L,V,位置,IDA); \t \t \t \t \t遊標mycursor =(遊標)getListView()。getItemAtPosition(位置); (「mycursor.getString(1)」+ mycursor.getString(1)+「」); – SAN

0

這可能對情況的工作,

...  
//TODO:need to assign the value here 
     TextView tv = (TextView)v.findViewById(R.id.itemname); 
     String category = tv.getText().toString(); 
... 

的「R.id.itemname」是在佈局XML定義列表項的id屬性。

+0

這是工作代碼; – SAN

0

這裏是工作代碼;

  @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     //TODO:need to assign the value here 
     Cursor mycursor = (Cursor) getListView().getItemAtPosition(position); 
     //1 is the field position 
     String mEdit = mycursor.getString(1); 

     if (mEdit.equals("type1")){ 
      Intent i = new Intent(this, activity1.class); 
      i.putExtra(DbAdapter.KEY_ROWID, id); 
      startActivityForResult(i, ACTIVITY_EDIT); 
     }else if (mEdit.equals("type2")){ 
      Intent i = new Intent(this, activity2.class); 
      i.putExtra(KEY_ROWIDA, id); 
      startActivityForResult(i, ACTIVITY_EDIT); 
     }; 

     } 
相關問題