クリックしたリストビューから新しいアクティビティを開始する最善の方法

主なアクティビティとしてリストビューとして正常に表示される配列があります。私はここ数日、多くのチュートリアルを使って、このリストビューでクリックしたアイテムからさまざまなアクティビティを開始する最善の方法を見つけようとしています。私はswitch文から変数でクラスを呼び出すまでのすべてを見てきましたが、何も動作していないようです。私はおそらくifステートメントを使用するだろうが、私のリストは120以上のエントリです。助言がありますか?

1

2 答え

なぜクラスをアイテムのパラメータとして入れないのですか?

    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 adapter = new ArrayAdapter(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;
            }
        }
    }
1
追加された

配列の2つの新しい配列を作成できます(list_itemsとlist_item_activities) 次に、アイテムが選択されると、そのインデックスを使用して関連付けられたアクティビティを見つけることができます。


  ExampleActivity
  ...



  com.example.app.ExampleActivity
  ...

もう少し説明するために、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アレイを思い出させました。私は試してみる必要があります。ありがとう
追加された 著者 The Tokenizer,