1

主なアクティビティとしてリストビューとして正常に表示される配列があります。私はここ数日、多くのチュートリアルを使って、このリストビューでクリックしたアイテムからさまざまなアクティビティを開始する最善の方法を見つけようとしています。私は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)に2つの新しい配列を作成することができます 次に、アイテムが選択されているときに、そのインデックスを使用して関連するアクティビティを検索できます。

<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

うーん...あなたの答えは2D配列を思い出しました。私は試してみる必要があります。ありがとう –

関連する問題