Recyclerview1

Recyclerview

RecyclerView比ListView的优势:
1.RecyclerView比listview实现效果更多
2.RecycelrView支持多布局;
3.RecyclerView根据项目需要插拔功能
RecyclerView默认不支持点击事件->程序员代码中通过回调接口的方式添加监听

依赖

implementation ‘com.android.support:recyclerview-v7:29.0.0’

一.重要的方法

1.RecyclerView横向滑动:
LinearLayoutManager.HORIZONTAL横向滑动LinearLayoutManager.VERTICAL垂直滑动

2.RecyclerView.Adapter中刷新方法区别:
notifyDataSetChanged();整体刷新+没有动画效果
notifyItemInserted(int position,Object data):有动画效果+添加一条数据在position位置
notifyItemRemoved(position);有动画效果+删除一条数据并刷新
注意:当添加和删除的时候,要更新下标,不然有错位现象

二.RecyclerView的用法

效果图
在这里插入图片描述

1.Activity中布局

<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=".MainActivity">

   <androidx.recyclerview.widget.RecyclerView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/recyclerView"></androidx.recyclerview.widget.RecyclerView>

</LinearLayout>

RecyclerView布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageview"></ImageView>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview"></TextView>

</LinearLayout>

适配器

public class MyRVAdapter extends RecyclerView.Adapter<MyRVAdapter.MyRvViewHolder>{

    ArrayList<Bean1.DataBean>list;
    Context context;
    private MyItemOnClickListener myItemOnClickListener;

    public void setMyItemOnClickListener(MyItemOnClickListener myItemOnClickListener) {
        this.myItemOnClickListener = myItemOnClickListener;
    }

    public MyRVAdapter(ArrayList<Bean1.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

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

    @Override
    public void onBindViewHolder(@NonNull MyRvViewHolder holder, final int position) {
        holder.textView.setText(list.get(position).getText());
        Glide.with(context).load(list.get(position).getImage1()).into(holder.imageView);

        //点击事件
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myItemOnClickListener.onItenClick(position);
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class MyRvViewHolder extends RecyclerView.ViewHolder{
        TextView textView;
        ImageView imageView;

        public MyRvViewHolder(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.textview);
            imageView = itemView.findViewById(R.id.imageview);
        }
    }
}

MainActivity代码 (Item点击事件)

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    ArrayList<Bean1.DataBean> list=new ArrayList<>();
    MyRVAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);

        adapter=new MyRVAdapter(list,this);
        recyclerView.setAdapter(adapter);
        StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
        DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
        recyclerView.addItemDecoration(dividerItemDecoration);
        //点击事件
        adapter.setMyItemOnClickListener(new MyItemOnClickListener() {
            @Override
            public void onItenClick(int position) {
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                intent.putExtra("video",list.get(position).getVideouri());
                startActivity(intent);
            }
        });


        OkGo.<String>get("https://www.apiopen.top/satinApi?type=1&page=5").execute(new StringCallback() {
            @Override
            public void onSuccess(Response<String> response) {
                String body = response.body();
                Toast.makeText(MainActivity.this,""+body,Toast.LENGTH_SHORT).show();
                Gson gson = new Gson();
                Bean1 bean1 = gson.fromJson(body, Bean1.class);
                List<Bean1.DataBean> data = bean1.getData();
                list.addAll(data);
                adapter.notifyDataSetChanged();
            }
        });
    }
}

接口回调(点击事件)

public interface MyItemOnClickListener {
    void onItenClick(int position);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了在Android RecyclerView中显示这些未完成和已完成的事项,您需要创建一个数据模型类来表示它们,例如: ``` data class Task(val name: String, var isCompleted: Boolean) ``` 然后,您可以创建一个RecyclerView适配器类来管理这些任务项: ``` class TaskAdapter(private val tasks: List<Task>) : RecyclerView.Adapter<TaskViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.task_item, parent, false) return TaskViewHolder(view) } override fun onBindViewHolder(holder: TaskViewHolder, position: Int) { val task = tasks[position] holder.bind(task) } override fun getItemCount() = tasks.size } class TaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bind(task: Task) { itemView.taskName.text = task.name itemView.taskCompleted.isChecked = task.isCompleted } } ``` 在上面的代码中,TaskAdapter类继承自RecyclerView.Adapter,并覆盖了onCreateViewHolder()、onBindViewHolder()和getItemCount()方法。onCreateViewHolder()方法用于创建ViewHolder实例,onBindViewHolder()方法用于将数据绑定到ViewHolder上,getItemCount()方法用于获取任务项的数量。TaskViewHolder类继承自RecyclerView.ViewHolder,并在bind()方法中将任务项数据绑定到视图上。 接下来,您需要为RecyclerView添加布局管理器和适配器: ``` val tasks = listOf( Task("做事", false), Task("吃饭", false), Task("睡觉", false), Task("做作业", true), Task("打游戏", true) ) val recyclerView = findViewById<RecyclerView>(R.id.recyclerView) recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.adapter = TaskAdapter(tasks) ``` 在上面的代码中,我们将tasks列表传递给TaskAdapter构造函数,并将RecyclerView的布局管理器设置为LinearLayoutManager。最后,将TaskAdapter实例设置为RecyclerView的适配器。 这样,在RecyclerView中就可以显示未完成和已完成的任务列表了,您可以使用RecyclerView的回调方法来处理任务项的删除、编辑和标记完成等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值