1

我有一個成功顯示爲listview作爲主要活動的數組。過去幾天我一直在使用很多教程來試圖找出從此列表視圖中單擊的項目開始不同活動的最佳方式。我已經看到了從switch語句到變量調用類的一切,但似乎沒有任何工作。我可能會使用if語句,但我的列表超過了120個條目。有什麼建議麼?從點擊的列表視圖開始新活動的最佳方式

回答

1

你爲什麼不把該類作爲該項目的參數?

package com.ybi; 

    import android.app.ListActivity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 
    import android.widget.Toast; 

    public class YbiListActivity extends ListActivity 
    { 
     public void onCreate(Bundle icicle) 
     { 
      super.onCreate(icicle); 
      ClickableItem[] values = new ClickableItem[1]; 

          // here you can add your label and your activity 
      values[0] = new ClickableItem("Hello", YbiListActivity.class); 

      ArrayAdapter<ClickableItem> adapter = new ArrayAdapter<ClickableItem>(this, android.R.layout.simple_list_item_1, values); 
      setListAdapter(adapter); 
     } 

     @Override 
     protected void onListItemClick(ListView l, View v, int position, long id) 
     { 
      ClickableItem item = (ClickableItem) getListAdapter().getItem(position); 
      Intent intent = new Intent(YbiListActivity.this, (Class<?>) item.itemClass); 
      startActivity(intent); 
      Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show(); 
     } 

     private class ClickableItem 
     { 
      public String itemLabel; 
      public Object itemClass; 

      public ClickableItem(String ilabel, Object iclass) 
      { 
       itemLabel = ilabel; 
       itemClass = iclass; 
      } 

      @Override 
      public String toString() 
      { 
       return itemLabel; 
      } 
     } 
    } 
0

您可以在arrays.xml中創建兩個新數組(list_items和list_item_activities) 然後,當選擇某個項目時,可以使用其索引來查找關聯的活動。

<string-array name="list_items"> 
    <item>ExampleActivity</item> 
    ... 
</string-array> 

<string-array name="list_item_activities"> 
    <item>com.example.app.ExampleActivity</item> 
    ... 
</string-array> 

要解釋一點,你可以使用list_items創建列表:

String[] list = getResources().getStringArray("list_items"); 
for(int i = 0; i < list.length; i++){ 
    // add the item 
} 

然後單擊該項目時:

public void onListItemClick(ListView l, View v, int position, long id){ 
    String[] activities = getResources().getStringArray("list_item_activities"); 
    // activities[position] is what you would use 
} 
+0

嗯......你的回答讓我想起了二維數組。我必須試一試。謝謝 – 2011-12-19 02:38:04

相關問題