**RecyclerView的一个简单案例**
   RecyclerView在安卓开发中基本上就是当作列表来使用,这个和安卓之前的ListView非常相似。 
   我们在使用的时候,需要建立一个适配器。这个适配器的类要继承ReclerView这个父类,从而重写以下几个方法:
   (1)onCreateViewHolder();
   (2)onBindViewHolder();
   (3)getItemCount();
  在这里我也不过多的讲解RecyclerView的知识点了。网上可以找到很多这样的文章。现在我们就直接看看其具体实现案例,可以更好的感受到RecyclerView的使用方法。
  第一个类是MainActivity:
  package com.example.myapplication;

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

import android.os.Bundle;

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

public class MainActivity extends AppCompatActivity {
private RecyclerView recycler_view;
private List fruitList = new ArrayList<>();
private String[] textString=new String[]{“苹果”,“橘子”,“葡萄”,“草莓”,“西瓜”,
“橙子”,“樱桃”,“梨子”,“樱桃”,“桃子”,“菠萝”};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();
recycler_view=findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recycler_view.setLayoutManager(layoutManager);
FruitAdapter adapter = new FruitAdapter(fruitList);
recycler_view.setAdapter(adapter);
}
private void initFruits() {
for (int i=0;i<FruitPicture.fruit_picture.length;i++){
Fruit fruit=new Fruit(textString[i],FruitPicture.fruit_picture[i]);
fruitList.add(fruit);
}
}
}
第二个类是FruitAdapter :
package com.example.myapplication;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
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 FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
private List mFruitList;
public FruitAdapter (List fruitList){
this.mFruitList = fruitList;
}
@NonNull
@Override
public FruitAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
}

@Override
public void onBindViewHolder(@NonNull FruitAdapter.ViewHolder holder, int position) {
    Fruit fruit = mFruitList.get(position);
    holder.fruitImage.setImageResource(fruit.getImageId());
    holder.fruitName.setText(fruit.getName());
    holder.shop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(holder.itemView.getContext(),"今天很热",Toast.LENGTH_SHORT).show();
            Intent  intent=new Intent(holder.itemView.getContext(),Shopping.class);
            intent.putExtra("img",FruitPicture.fruit_picture[position]);
            holder.itemView.getContext().startActivity(intent);
        }
    });
}

@Override
public int getItemCount() {
    return mFruitList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
    ImageView fruitImage;
    TextView fruitName;
    Button shop;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        fruitImage = (ImageView) itemView.findViewById(R.id.fruit_image);
        fruitName = (TextView) itemView.findViewById(R.id.fruitname);
        shop=(Button)itemView.findViewById(R.id.shop);
    }
}

}
第三个类Fruit:
package com.example.myapplication;

public class Fruit {
private String name;
private int imageId;
public Fruit(String name, int imageId){
this.name = name;
this.imageId = imageId;
}
public String getName() {
return name;
}
public int getImageId() {
return imageId;
}
}
第四个类FruitPicture:
package com.example.myapplication;

public class FruitPicture {
static int[] fruit_picture=new int[]{
R.drawable.fruit,
R.drawable.fruit1,
R.drawable.fruit2,
R.drawable.fruit3,
R.drawable.fruit4,
R.drawable.fruit5,
R.drawable.fruit6,
R.drawable.fruit7,
R.drawable.fruit8,
R.drawable.fruit9,
R.drawable.fruit10
};
}
第五个类Shopping:
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class Shopping extends AppCompatActivity {
private ImageView fruit_image;
private Button add_button;
private TextView number;
private Button reduce_button;
private TextView price;
private Button payment;
int num;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shopping);
initView();
initEvent();
}

private void initEvent() {
    //设置图片
    fruit_image.setImageResource(getData());
    //设置购买的数量,增加购买产品的数量
    //每点击一次就会数量就会加1
    add_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            num++;
            String shuliang=String.valueOf(num);
            number.setText(shuliang);
            int all_price=num*10;
            price.setText(String.valueOf(all_price));
        }
    });
    //设置购买的数量,减少购买产品的数量
    //每点击一次就会数量就会加1
    reduce_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            num--;
            if (num<0){
                num=0;
                Toast.makeText(Shopping.this,"已经不能在减少数量",Toast.LENGTH_SHORT).show();
            }
            String shuliang=String.valueOf(num);
            number.setText(shuliang);
            int all_price=num*10;
            price.setText(String.valueOf(all_price));
        }
    });
    payment.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String str=price.getText().toString();
            Toast.makeText(Shopping.this,"你已经支付了"+str,Toast.LENGTH_SHORT).show();
        }
    });
}
private void initView() {
    fruit_image=findViewById(R.id.fruit_image);
    add_button=findViewById(R.id.add_button);
    number=findViewById(R.id.number);
    reduce_button=findViewById(R.id.reduce_button);
    price=findViewById(R.id.price);
    payment=findViewById(R.id.payment);
}
//获取MainActivity中数据
public int getData(){
    Intent intent=getIntent();
    int img_id=intent.getIntExtra("img",0);
    return img_id;
}

}
这上面是java代码,接着我们来看看布局文件:
第一个布局文件activity_main:

<androidx.recyclerview.widget.RecyclerView
android:id=”@+id/recycler_view”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”/>

第二个布局文件是activity_shopping:

<?xml version=”1.0″ encoding=”utf-8″?>

<ImageView
    android:id="@+id/fruit_image"
    android:layout_width="match_parent"
    android:layout_height="339dp"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="20dp">
    <Button
        android:id="@+id/add_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="增加"
        android:textSize="30sp"/>
    <TextView
        android:id="@+id/number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:textSize="30sp"
        android:layout_weight="1"
        android:gravity="center"/>
    <Button
        android:id="@+id/reduce_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="减少"
        android:textSize="30sp"/>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="20dp">
    <TextView
        android:id="@+id/price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <Button
        android:id="@+id/payment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="支付"
        android:textSize="30sp"/>
</LinearLayout>

第三个布局文件是fruit_item: <?xml version=”1.0″ encoding=”utf-8″?>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/fruitname"
    android:gravity="center_vertical"
    android:textSize="49dp"
    android:layout_marginLeft="10dp"/>

最后我们来看看最后运行的结果如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


版权声明:本文为weixin_43228946原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43228946/article/details/117326249