1.实现目的
在列表页上点击跳转到另一详情页面
2.技术说明
-
Activities: Android中的Activity是应用程序的一个单一屏幕。这里使用了两个Activity — 一个用于显示列表(
MainActivity
),另一个用于显示点击条目的详情(DetailActivity
)。 -
Intents: Intent是Android中用于请求另一个组件(如Activity)的消息对象。在这个例子中,当用户点击列表项时,一个Intent被用来启动
DetailActivity
。同时,Intent还用来传递数据(如点击的条目编号)到DetailActivity
。 -
RecyclerView: 用于高效显示大量滚动列表的视图。这里用它来显示条目列表,并在每个条目上设置监听器来处理点击事件。
-
RecyclerView.Adapter: 用于绑定数据到
RecyclerView
中的每个条目。在这里,适配器不仅负责提供数据,还为每个列表项设置了点击监听器。 -
Layouts: 布局文件用于定义Activity的UI结构。这里使用了两个布局文件 — 一个用于列表项(
item_view.xml
),另一个用于详情页(activity_detail.xml
)。 -
OnClickListener: 一个接口,用于处理视图(如列表中的条目)上的点击事件。在适配器中,为每个条目的视图设置了OnClickListener来捕捉点击事件,并执行相应的操作。
-
Manifest: AndroidManifest.xml文件中声明了应用中的所有组件和权限。这里更新了Manifest文件以包含新的
DetailActivity
。
3.新增xml布局
activity_detail
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="16dp">
<TextView
android:id="@+id/detail_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Detail Page"
android:textSize="22sp"/>
</LinearLayout>
4.新增详情类
DetailActivity
package com.example.homewrok1;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class DetailActivity extends AppCompatActivity {
public static final String EXTRA_ITEM_NUMBER = "extra_item_number";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
// 获取传递的项编号
int itemNumber = getIntent().getIntExtra(EXTRA_ITEM_NUMBER, 0);
// 设置文本视图显示项编号
TextView textView = findViewById(R.id.detail_text_view);
textView.setText("Item " + itemNumber);
}
}
5.修改RecycleViewAdapter
package com.example.homewrok1;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// 绑定数据到视图,显示项编号
holder.textView.setText("Item " + position);
}
@Override
public int getItemCount() {
return 101; // 从0到100,总共101项
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
ViewHolder(View view) {
super(view);
textView = view.findViewById(R.id.text_view_item);
// 设置点击监听器
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取当前项的位置
int position = getAdapterPosition();
// 创建意图并启动新的Activity
Intent detailIntent = new Intent(v.getContext(), DetailActivity.class);
detailIntent.putExtra(DetailActivity.EXTRA_ITEM_NUMBER, position);
v.getContext().startActivity(detailIntent);
}
});
}
}
}
6.详情呈现
点击item 0
返回,向下滑动
点击item 97
3.源码地址
https://gitee.com/xu-yinci/my-a/tree/master/homeWork2