RecyclerView用法写list列表

前面用ListView和Viewhold组合写了一个用例,现在用goole新的控件RecyclerView 写列表

ListView和Viewhold组合 https://blog.csdn.net/m0_37622302/article/details/107311135

引入包

创建 

RecyclerViewActivity,recycler_layout.xml
RecycleItem,recycle_item.xml
RecycleAdapter

RecyclerViewActivity.java代码

package com.example.a20200712;

import android.os.Bundle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.app.AppCompatActivity;

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

public class RecyclerViewActivity extends AppCompatActivity {
    private List<RecycleItem>  dataList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recycler_layout);
        initDataList();
        RecyclerView recyclerView = findViewById(R.id.layout_recycle_list);
        LinearLayoutManager layoutManager= new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        RecycleAdapter adapter = new RecycleAdapter(dataList);
        recyclerView.setAdapter(adapter);
    }

    private void initDataList() {
        for(int i = 1; i < 30; i++) {
            RecycleItem apple = new RecycleItem(""+i+i+i+i, R.drawable.kf);
            dataList.add(apple);
        }
    }
}
RecycleItem.java代码
package com.example.a20200712;

public class RecycleItem {

    private String layout_recycle_head;
    private int layout_recycle_img;

    public String getLayout_recycle_head() {
        return layout_recycle_head;
    }

    public RecycleItem(String layout_recycle_head, int layout_recycle_img) {
        this.layout_recycle_head = layout_recycle_head;
        this.layout_recycle_img = layout_recycle_img;
    }

    public void setLayout_recycle_head(String layout_recycle_head) {
        this.layout_recycle_head = layout_recycle_head;
    }

    public int getLayout_recycle_img() {
        return layout_recycle_img;
    }

    public void setLayout_recycle_img(int layout_recycle_img) {
        this.layout_recycle_img = layout_recycle_img;
    }
}
RecycleAdapter.java 代码
package com.example.a20200712;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.ViewHolder> {
    private List<RecycleItem> mList;

    static class ViewHolder extends RecyclerView.ViewHolder {
        View itemView;
        ImageView iv;
        TextView tv;

        public ViewHolder(View view) {
            super(view);
            itemView = view;
            iv = view.findViewById(R.id.layout_recycle_img);
            tv = view.findViewById(R.id.layout_recycle_head);
        }
    }

    static long last_click_time = 0;
    static long TIME_INTERVAL = 1000;
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item, parent, false);
        final ViewHolder holder = new ViewHolder(view);

        holder.tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //预防重复点击报错
                long  current_time = System.currentTimeMillis();
                if(current_time - last_click_time >TIME_INTERVAL){
                    last_click_time = current_time;
                    int position = holder.getLayoutPosition();//有人引用的是 getAdapterPosition
                    RecycleItem recycleItem = mList.get(position);
                    mList.remove(recycleItem);
                    notifyItemRemoved(position);//通知行被删除了
                }


            }
        });
        holder.iv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int position = holder.getLayoutPosition();//有人引用的是 getAdapterPosition
                RecycleItem recycleItem = mList.get(position);
                recycleItem.setLayout_recycle_head("修改后的图片"+recycleItem.getLayout_recycle_head());
                notifyItemChanged(position);//通知行被修改了
            }
        });
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        RecycleItem recycleItem = mList.get(position);
        holder.iv.setImageResource(recycleItem.getLayout_recycle_img());
        holder.tv.setText(recycleItem.getLayout_recycle_head());
    }

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

    public RecycleAdapter(List<RecycleItem> dataList) {
        mList = dataList;
    }

}

recycler_layout.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="match_parent">

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

</LinearLayout>

recycle_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="wrap_content"
    >

    <ImageView
        android:id="@+id/layout_recycle_img"
        android:layout_width="157dp"
        android:layout_height="150dp" />

    <TextView
        android:id="@+id/layout_recycle_head"
        android:layout_width="244dp"
        android:layout_height="150dp"
        android:textSize="30dp"
        android:layout_gravity="center_vertical"
        android:layout_toRightOf="@+id/layout_recycle_img" />

</RelativeLayout>

显示结果

猜你喜欢

转载自blog.csdn.net/m0_37622302/article/details/107342222