APP点击跳转设计

一、目标功能

请根据APP门户界面设计的源码基础,在列表页上点击跳转到另一详情页面

二、实现思路

1. 创建目标界面:首先创建一个Activity作为目标界面。

2. 设置RecyclerView:在目标界面的布局文件中定义一个RecyclerView,

3. 准备数据源:在目标界面中,准备用于显示在RecyclerView中的数据集合。

4. 绑定数据:在Adapter中实现数据与RecyclerView的绑定逻辑。创建一个继承自RecyclerView.Adapter的适配器类,并在其中实现相应的方法

5. 跳转到目标界面:在源界面中点击来跳转到目标界面。
 

三、代码文件

1、布局文件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include layout="@layout/top" />

        <FrameLayout
            android:id="@+id/id_content"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        </FrameLayout>

        <include layout="@layout/bottom" />

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

item.xml

<?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="50dp"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_margin="8dp"
    android:background="@drawable/common_bg"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        android:gravity="center"
        android:text="TextView" />


</LinearLayout>

activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity2">

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="这是第一个activity"
        android:textSize="40sp" />

</LinearLayout>

activity_main3.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity3">

    <TextView
        android:id="@+id/textView5"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="新闻详情"
        android:textSize="40dp" />
</LinearLayout>
2、Java文件

MainActivity2.java

package com.example.myapplication;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity2 extends AppCompatActivity {
    private Button button1;
    private Button button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == 31) {
            String state = data.getStringExtra("state");
            Log.d("life", state);
        }

    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("life", "activity1 is onStart...");
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        Log.d("life", "activity1 is onPostResume...");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("life", "activity1 is onReStart...");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("life", "activity1 is onPause...");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("life", "activity1 is onStop...");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("life", "activity1 is onDestroy...");
    }

    @Override
    public void finish() {
        super.finish();
        Log.d("life", "activity1 is finish...");
    }

    @Override
    public void finishActivity(int requestCode) {
        super.finishActivity(requestCode);
        Log.d("life", "activity1 is finishActivity...");
    }

}

MainActivity3.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity3 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        Log.d("life", "activity2 is onPostResume...");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.d("life", "activity2 is onStart...");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("life", "activity2 is onReStart...");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.d("life", "activity2 is onStop...");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("life", "activity2 is onDestroy...");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.d("life", "activity2 is onPause...");
    }
    @Override
    public void finish() {
        super.finish();
        Log.d("life", "activity2 is finish...");
    }
    @Override
    public void finishActivity(int requestCode) {
        super.finishActivity(requestCode);
        Log.d("life", "activity2 is finishActivity...");
    }
}

contactFragment.java

package com.example.myapplication;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Fragment;

import com.example.myapplication.Myadapter;

import androidx.annotation.Nullable;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;


public class contactFragment extends Fragment {

    private RecyclerView recyclerView;
    private Myadapter myadapter;
    private List<String> list = new ArrayList<>();
    private Context context;


    public contactFragment() {
        // Required empty public constructor
    }

    private void initData() {
        for (int i = 0; i < 30; i++) {
            list.add("最新新闻" + i);
        }
    }

    private void initView3() {
        context = this.getActivity();
        myadapter = new Myadapter(list, context);

        LinearLayoutManager manager3 = new LinearLayoutManager(context);
        manager3.setOrientation(LinearLayoutManager.VERTICAL);

        recyclerView.setAdapter(myadapter);
        recyclerView.setLayoutManager(manager3);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
//        return inflater.inflate(R.layout.contact, container, false);

        View view = inflater.inflate(R.layout.contact, container, false);
        recyclerView = view.findViewById(R.id.recycleview);
        initData();
        initView3();
        return view;
    }

}

Myadapter.java

package com.example.myapplication;

import android.content.Context;
import android.util.Log;
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;

import java.util.ArrayList;
import java.util.List;


public class contact_adapter extends RecyclerView.Adapter<contact_adapter.VerticalViewHolder>{

    private static final String Tag = contact_adapter.class.getSimpleName();
    private Context myContext;
    private List<String> mylist = new ArrayList<>();

    public contact_adapter(Context context) {
        myContext = context;
    }

    public void setVerticalDataList(List<String> list) {
        Log.d(Tag, "setVerticalDataList: " + list.size());

        mylist = list;

        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public VerticalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(myContext).inflate(R.layout.item3, parent, false);
        return new VerticalViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull VerticalViewHolder holder, int position) {
        holder.teamNum.setText(position + 1 + "");
        holder.teamContent.setText(mylist.get(position));
    }

    @Override
    public int getItemCount() {
        return mylist == null ? 0 : mylist.size();
    }

    public class VerticalViewHolder extends RecyclerView.ViewHolder {

        TextView teamNum, teamContent;

        public VerticalViewHolder(View itemView) {
            super(itemView);
            teamNum = itemView.findViewById(R.id.team_num);
            teamContent = itemView.findViewById(R.id.team_content);
        }
    }

}

三、实验总结

在本次实验中,我们通过在类微信界面中添加RecycleView,并为其添加了点击跳转功能,深入了解了Activity的生命周期和状态转变操作。通过正确管理Activity的生命周期,我们可以合理地处理Activity的创建、启动、暂停、恢复和销毁等过程,确保应用程序的正常运行和用户体验。

通过实现RecycleView的点击跳转功能,我们还学会了如何在不同的Activity之间传递和交互数据。这可以帮助我们构建更灵活、交互性更强的应用程序,提升用户体验和功能扩展性。

在实验过程中,我们不仅理解了Activity的基本概念和原理,还掌握了一些具体的操作技巧。同时,通过深入了解Android系统的架构和组件,我们可以更好地开发高质量的Android应用程序。

通过这次实验,我们对Android开发有了更深入的了解,同时也增加了实际操作的经验。这对于我们今后的Android开发工作具有重要的指导作用,帮助我们更好地应对实际项目需求,提供更优秀的应用程序

四、源码地址

dwhoomj/dwhoomj - Gitee.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值