En build.gradlew agregar en dependencias
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
//En activity_main.xml
//list_element.xml
//ListElement.java
package com.example.cardview;
public class ListElement {
public String color;
public String name;
public String city;
public String status;
public ListElement(String color, String name, String city, String status) {
this.color = color;
this.name = name;
this.city = city;
this.status = status;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
//ListAdapter.java
package com.example.cardview;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class ListAdapter extends RecyclerView.Adapter {
private List mData;
private LayoutInflater mInflater;
private Context context;
public ListAdapter(List itemList, Context context){
this.mInflater = LayoutInflater.from(context);
this.context = context;
this.mData = itemList;
}
@Override
public ListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.list_element, null);
return new ListAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(final ListAdapter.ViewHolder holder, int position) {
holder.bindData(mData.get(position));
}
@Override
public int getItemCount(){
return mData.size();
}
public void setItems(List items){
mData = items;
}
public class ViewHolder extends RecyclerView.ViewHolder{
ImageView iconImage;
TextView name, city, status;
ViewHolder(View itemView){
super(itemView);
iconImage = itemView.findViewById(R.id.iconImageView);
name = itemView.findViewById(R.id.nameTextView);
city = itemView.findViewById(R.id.cityTextView);
status = itemView.findViewById(R.id.statusTextView);
}
void bindData(final ListElement item){
iconImage.setColorFilter(Color.parseColor(item.getColor()), PorterDuff.Mode.SRC_IN);
name.setText(item.getName());
city.setText(item.getCity());
status.setText(item.getStatus());
}
}
}
//MainActivity.java
package com.example.cardview;
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 {
List elements;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init(){
elements = new ArrayList<>();
elements.add(new ListElement("#775447","Carlos", "Medellin", "Activo"));
elements.add(new ListElement("#775447","Maria", "Medellin", "Activo"));
elements.add(new ListElement("#775447","Angela", "Medellin", "Activo"));
ListAdapter listAdapter = new ListAdapter(elements, this);
RecyclerView recyclerView = findViewById(R.id.listRecyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(listAdapter);
}
}
