我想将列表视图中的所有列表项打开到一个新页面,因此每个listview项都会打开一个我可以使用的新黑页。我根本不知道如何实现这一点。我已经搜索了几个小时,但找不到我的解决方案的答案。如果有人能够展示和/或解释如何执行此操作而不是提供链接,将非常感激,但要么是有帮助的。
到目前为止,这是我的代码:
<string-array name="sections">
<item >Pro Constructive</item>
<item >Con Constructive</item>
<item >1st Speaker Cross</item>
<item >Pro Rebbutal</item>
<item >Con Rebuttal</item>
<item >2nd Speaker Cross</item>
<item >Pro Summary</item>
<item >Con Summary</item>
<item >Grand Cross</item>
<item >Pro Final Focus</item>
<item >Con Final Focus</item>
</string-array>
这是我的string.xml
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:entries="@array/sections" >
</ListView>
这是在我的activity_main.xml。
我从哪里开始,使我的列表中的每个项目都可以点击并打开到新页面?
提前致谢!
编辑:
Logcat不再相关。
答案 0 :(得分:31)
事实上这很容易:
这是您使用ListView的Activity,它实现了一个OnItemClickListener:
public class MainActivity extends Activity implements OnItemClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//* *EDIT* *
ListView listview = (ListView) findViewById(R.id.listView1);
listview.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
Log.i("HelloListView", "You clicked Item: " + id + " at position:" + position);
// Then you start a new Activity via Intent
Intent intent = new Intent();
intent.setClass(this, ListItemDetail.class);
intent.putExtra("position", position);
// Or / And
intent.putExtra("id", id);
startActivity(intent);
}
修改
上面的代码将放在您的MainActivity.java中。我将类的名称更改为MainActivity
,将contentView更改为setContentView(R.layout.activity_main)
- 这些名称是Eclipse中新创建的Android项目的名称。
另请参阅// * 编辑 *下的2个新行 - 这些行将设置监听器以查看列表中项目的点击次数。
您的activity_main.xml应如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:entries="@array/sections" >
</ListView>
</RelativeLayout>
<resources>
<string-array name="sections">
<item >Pro Constructive</item>
<item >Con Constructive</item>
<item >1st Speaker Cross</item>
<item >Pro Rebbutal</item>
<item >Con Rebuttal</item>
<item >2nd Speaker Cross</item>
<item >Pro Summary</item>
<item >Con Summary</item>
<item >Grand Cross</item>
<item >Pro Final Focus</item>
<item >Con Final Focus</item>
</string-array>
</resources>
N.B。:如果你复制&amp;粘贴此代码它应该工作。但是你会因点击一个项而得到一个错误,因为你还没有创建ListItemDetail.class
。
以下是一个示例:
< / p>
你的ListItemDetail.java:
public class ListItemDetail extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listitem);
Intent intent = getIntent();
int position = intent.getIntExtra("position", 0);
// Here we turn your string.xml in an array
String[] myKeys = getResources().getStringArray(R.array.sections);
TextView myTextView = (TextView) findViewById(R.id.my_textview);
myTextView.setText(myKeys[position]);
}
}
及其activity_listitem.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/my_textview"/>
</LinearLayout>
如果您复制过这段代码,它将会有效。
答案 1 :(得分:1)
你可以在string.xml中填充listview,就像这样
String[] myKeys = getResources().getStringArray(R.array.sections);
ListView mListView = (ListView)findViewById(R.id.listView1);
mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myKeys));
并点击listview项目非常简单方便。只需使用setOnItemClickListener
mListView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0,View arg1, int position, long arg3)
{
Intent n = new Intent(getApplicationContext(), yourclass.class);
n.putExtra("position", position);
startActivity(n);
}
});
答案 2 :(得分:0)
使用onListItemClick
函数设置加载下一个活动的Intent并传递任何数据。
public void onListItemClick(ListView parent, View view, int position, long id)
{
Intent intent = new Intent(this, AnotherActivity.class);
intent.putExtra("position", position);
startActivity(intent);
}
答案 3 :(得分:0)
listView =(ListView)findViewById(R.id.listview);
列出项目
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(position==0){
Intent i=new Intent(MainActivity.this,Main3Activity.class);
startActivity(i);
}
}
});
答案 4 :(得分:0)
String [] menuItems = {“默认C02”,“默认02”};
ListView listView = (ListView) root.findViewById(R.id.main_menu);
ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>(
getActivity()
,android.R.layout.simple_list_item_1
,menuItems
);
listView.setAdapter(listViewAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> l, View v, int position, long id){
Log.i("menuItems", "You clicked Item: " + id + " at position:" + position);
}
});