如何在列表选中项后启动新Activity并展示对应内容?
实现ListView条目点击跳转并展示详情
首先看你提供的代码,有几个小语法问题需要修正,比如onClick方法的定义要规范,还有变量重复声明的问题。下面是完整的实现步骤和代码,帮你搞定这个需求:
1. 修正并补全ListView的点击监听器
ListView的条目点击需要用专门的OnItemClickListener,它能直接拿到点击位置,方便获取对应数据。补全后的代码如下:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { // 获取当前点击条目的内容 String itemContent = (String) adapterView.getItemAtPosition(position); // 创建Intent,跳转到详情页面的Activity Intent intent = new Intent(YourCurrentActivity.this, DetailActivity.class); // 把条目内容通过Intent传递过去,用"ITEM_CONTENT"作为标识键 intent.putExtra("ITEM_CONTENT", itemContent); startActivity(intent); } });
注意:把YourCurrentActivity替换成你当前这个ListView所在的Activity类名(比如MainActivity)。
2. 创建详情展示的Activity(DetailActivity)
第一步:写详情页的布局文件(activity_detail.xml)
在布局里添加一个TextView用来展示条目内容:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" android:orientation="vertical"> <TextView android:id="@+id/tv_detail_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" /> </LinearLayout>
第二步:编写DetailActivity的逻辑代码
在这个Activity里接收传递过来的数据,并显示在TextView上:
public class DetailActivity extends AppCompatActivity { private TextView tvDetailContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); tvDetailContent = findViewById(R.id.tv_detail_content); // 获取从之前页面传递过来的Intent Intent intent = getIntent(); if (intent != null) { String itemContent = intent.getStringExtra("ITEM_CONTENT"); // 把内容设置到TextView上 tvDetailContent.setText(itemContent); } } }
3. 在AndroidManifest.xml中注册DetailActivity
别忘了在清单文件里注册这个新Activity,不然运行会崩溃:
<application ...> <!-- 你已有的其他Activity --> <activity android:name=".DetailActivity" /> </application>
关键细节说明
- 为什么用
OnItemClickListener:ListView的条目点击不能直接用普通的OnClickListener,OnItemClickListener能直接拿到点击的position,轻松定位到对应条目数据。 - Intent传值:
putExtra可以传递简单数据类型,如果是复杂对象,可以用序列化或者Parcelable来实现。 - 数据接收:目标Activity通过
getIntent()拿到传递过来的Intent,再用对应类型的getXXXExtra方法取出数据即可。
这样就能完美实现点击ListView条目跳转到新页面并展示对应内容啦~
内容的提问来源于stack exchange,提问作者René B
相关产品推荐
相关产品推荐

