use*_*656 2 android listactivity
我正在开发一个Android应用程序,我遇到了困难ListActivity.我希望Activity根据单击列表中的哪个项目有一个不同的开始.
我做了一个列表并setListAdapter在java中引用它,但我不知道如何引用它OnListItemClick.我假设我需要引用列表中的位置.
随着Activity和Buttons,我可以设置OnClickListener并使用switch语句和case每一个Button.相当于ListActivity什么?
这是我的代码:
public class Options extends ListActivity implements {
String myHistory[]= { "Item 1", "Item 2", "Item 3" };
//---Set ListView---
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String> ( Options.this,
android.R.layout.simple_list_item_1, myHistory)));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
//--if click position 1, do below
//--Intent a = new Intent("show Item 1's corresponding page");
//--startActivity(a);
//--if click item in position 2, do below
//--Intent b = new Intent("show Item 2's corresponding page");
//--startActivity(b);
//--if click item in position 3, do below
//--Intent c = new Intent("show Item 3's corresponding page");
//--startActivity(c);
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定还有其他方法可以做到这一点,但我是这样做的:我在活动类上设置了click监听器(而不是在适配器上设置,我觉得这更有意义).保存您要调用的类的数组:
Class[] classList = new Class[]{class1.class, class2.class....};
Run Code Online (Sandbox Code Playgroud)
将监听器添加到列表视图
lv.setOnItemClickListener(listviewClickListener());
Run Code Online (Sandbox Code Playgroud)
然后是onItemClickListener方法:
private OnItemClickListener listviewClickListener() {
OnItemClickListener clickListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
//And then call the corresponing one
Intent I= new Intent(thisActivity, classList[i]);
int id = listOfObjects.get(position).getId();//do whatever you want with the object on the postition "position"
Bundle bundle = new Bundle();
bundle.putInt("id", id);
i.putExtras(bundle);
thisActivity.startActivity(i);
}
};
return clickListener;
}
Run Code Online (Sandbox Code Playgroud)
我没有测试类文字的数组,但我想它应该工作..
编辑:我在考虑你想为每个项目创建不同的活动(由于列表视图中的所有项目都属于同一个组,因此考虑它没有多大意义(没有上下文),因此可能是以同样的方式使用).否则,您不需要活动列表,只需添加您想要的意图.
| 归档时间: |
|
| 查看次数: |
5352 次 |
| 最近记录: |