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