IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android跳转小项目-CHANGE页面-Recycylerview、List、Context(二) -> 正文阅读

[移动开发]Android跳转小项目-CHANGE页面-Recycylerview、List、Context(二)

页面二

页面需求

需要在change页面中出现两列内容,左边列为1-30,在数字后跟删除按钮;右边为31-60,数字后为删除按钮,在点击某一边的删除按钮后,对应的数组会跳转到另一列中。
在这里插入图片描述

流程说明

首先,需要创建change_page.xml页面,在页面中使用线性布局,添加两个RecyclerView,然后再单独创建item_demo.xml为RecyclerView中的item设置样式。

接下来创建适配器RecycleAdapterDemo.java
① 创建一个继承RecyclerView.Adapter的Adapter类
② 创建一个继承RecyclerView.ViewHolder的静态内部类
③ 在Adapter中实现3个方法:
onCreateViewHolder()(用来绑定xml样式)
onBindViewHolder()(可以用来绑定监听事件)
getItemCount()

再在内部类绑定控件,其中再创建方法绑定TextView的id。

定义点击事件接口,声明监听器,并提供其set方法。

代码

RecycleAdapterDemo.java

package com.example.firstproject;

/*
① 创建一个继承RecyclerView.Adapter<VH>的Adapter类
② 创建一个继承RecyclerView.ViewHolder的静态内部类
③ 在Adapter中实现3个方法:
   onCreateViewHolder()
   onBindViewHolder()
   getItemCount()
*/

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

public class RecycleAdapterDemo extends RecyclerView.Adapter<RecycleAdapterDemo.MyViewHolder> {
    private Context context;
    private List<Integer> list;
    private View inflater;
    private OnClickListener mOnClickListener;   //【1】、声明监听器

    /*构造方法,传入数据*/
    public RecycleAdapterDemo(Context context, List<Integer> list) {
        this.context = context;
        this.list = list;
    }

    /*【4】 接口OnClinkListener及【3】中声明的mOnClickListener*/
    public void setmOnClickListener(OnClickListener onClickListener){
        this.mOnClickListener = onClickListener;
    }

    /*【3】定义接口
     * */
    interface OnClickListener{
        void onClick(int adapterPosition);
    }

    @NonNull
    /*创建ViewHolder,返回每一项的布局*/
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        inflater = LayoutInflater.from(context).inflate(R.layout.item_demo, parent, false);
        MyViewHolder myViewHolder = new MyViewHolder(inflater);
        return myViewHolder;
    }

    /*将数据和控件绑定*/
    @Override
    public void onBindViewHolder(RecycleAdapterDemo.MyViewHolder holder, int position) {
        holder.textView.setText(String.valueOf(list.get(position)));    //1-30之间的数字显示,将Integer转为String

        /*【2】
        绑定监听、点击、删除、交换操作
        * */
		//为button绑定点击监听
        holder.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnClickListener != null)
                    mOnClickListener.onClick(holder.getAdapterPosition());  //上面的position报错问							题,是拿的方式不对
            }
        });
    }

    //返回Item总条数
    @Override
    public int getItemCount() {
        return list.size();
    }

    //内部类,绑定控件
    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
		//对于button控件要进行声明,才能在后面的onBindView中设置点击监听
		Button button;
        public MyViewHolder(View itemView) {
            super(itemView);
            textView = (TextView) itemView.findViewById(R.id.text_view);
            button = (Button) itemView.findViewById(R.id.button);
        }
    }
}

ChangeActivity.java

package com.example.firstproject;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Context;
import android.os.Bundle;
import android.widget.Toast;

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

/***
 * 重点学习
 *      1、Context
 *      2、Intent
 *      3、setOnClickListener
 */

/***
 * 此类中使用了复用
 */
public class ChangeActivity extends AppCompatActivity {
    private RecyclerView recyclerView1;  //声明recyclerview
    private RecyclerView recyclerView2;

    private RecycleAdapterDemo adapterDemo1;    //声明适配器
    private RecycleAdapterDemo adapterDemo2;

    private Context context;

    private List<Integer> list1;
    private List<Integer> list2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = this;
        setContentView(R.layout.change_page); /*启动的主页面*/

        recyclerView1 = (RecyclerView) findViewById(R.id.recyclerView_left);  /*第一个recyclerview的id */
        recyclerView2 = (RecyclerView) findViewById(R.id.recyclerView_right);  /*第二个recyclerview的id */

        list1 = new ArrayList<>();
        for (int i = 1; i <= 30; i++) {
            list1.add(i);
        }

        list2 = new ArrayList<>();
        for (int i = 31; i <= 60; i++) {
            list2.add(i);
        }

        adapterDemo1 = new RecycleAdapterDemo(context, list1);
        adapterDemo2 = new RecycleAdapterDemo(context, list2);

        LinearLayoutManager manager1 = new LinearLayoutManager(context);
        manager1.setOrientation(LinearLayoutManager.VERTICAL);   //此处垂直

        LinearLayoutManager manager2 = new LinearLayoutManager(context);
        manager2.setOrientation(LinearLayoutManager.VERTICAL);   //此处垂直

        recyclerView1.setLayoutManager(manager1);
        recyclerView1.setAdapter(adapterDemo1);
        recyclerView2.setLayoutManager(manager2);
        recyclerView2.setAdapter(adapterDemo2);

        /*【5】点击、删除、移动、刷新的内容*/
        adapterDemo1.setmOnClickListener(new RecycleAdapterDemo.OnClickListener() {
            @Override
            public void onClick(int position) {
                Toast.makeText(ChangeActivity.this, "pos:"+list1.get(position), Toast.LENGTH_SHORT).show();
                int temp = list1.get(position);
                list1.remove(position);
                list2.add(0,temp);
                adapterDemo1.notifyItemRemoved(position);
                adapterDemo2.notifyDataSetChanged();
            }
        });

        adapterDemo2.setmOnClickListener(new RecycleAdapterDemo.OnClickListener() {
            @Override
            public void onClick(int position) {
                Toast.makeText(ChangeActivity.this, "pos:"+list2.get(position), Toast.LENGTH_SHORT).show();
                int temp = list2.get(position);
                list2.remove(position);
                list1.add(0,temp);  //此处表示删除后要添加的位置 在前还是在后
                adapterDemo2.notifyItemRemoved(position);
                adapterDemo1.notifyDataSetChanged();
            }
        });

      /*
      Intent intent = new Intent(context,MainActivity.class);
      context.startActivity(intent);  页面的跳转,跳转的最终页面是MainActivity
      */
    }
}

AndroidManifest.xml配置

<!--ChangeActivity类的activity标签-->
        <activity
            android:name=".ChangeActivity"
            android:exported="true">
        </activity>
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:49:28  更:2021-12-01 17:51:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:35:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码