gpt4 book ai didi

java - Android - 如何创建可点击的 ListView ?

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:32 24 4
gpt4 key购买 nike

我想让 ListView 中的所有列表项都打开到一个新页面中,这样每个 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 不再相关。

最佳答案

其实很简单:

这是带有 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 项目的名称。
另请参阅//* Edit * 下的 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>

`res/values/` 文件夹中的 array.xml(不是 string.xml)如下所示

<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>

注意:如果您复制并粘贴此代码,它应该可以工作。但是您将在单击某个项目时遇到错误,因为您还没有创建 ListItemDetail.class

这是一个看起来如何的示例:

你的 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>

如果您复制过去的代码,它将起作用。

关于java - Android - 如何创建可点击的 ListView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com