从单击的列表视图开始新活动的最佳方式

时间:2011-12-19 00:44:06

标签: android android-listview android-intent android-activity

我有一个成功显示为列表视图的数组作为主要活动。在过去的几天里,我一直在使用很多教程,试图找出从点击此列表视图中的项目开始不同活动的最佳方式。我已经看到了从switch语句到变量调用类的所有内容,但似乎没有任何效果。我可能会使用if语句,但我的列表超过120个条目。有什么建议吗?

2 个答案:

答案 0 :(得分: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;
            }
        }
    }

答案 1 :(得分: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
}