我使用自定义适配器在应用程序中使用RecyclerView
。
我想处理现有的菜单 RecyclerView
项。像普通变量一样访问它们,以便我可以在类适配器之外应用特定条件或通过短信等方式发送它们。
如何访问RecyclerView
项目?
代码类矩阵:
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
addItem();
Button button = findViewById(R.id.get_item);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*
I want when I press the button
The items are called
*/
}
});
}
public void addItem() {
List<Shops> shops = new ArrayList<>();
String[] cloth = {"Silk", "Cotton", "Linen"};
String[] wood = {"Sandal", "Jawi", "Pine"};
String[] metal = {"Window", "door", "roof"};
RecyclerView recyclerView = findViewById(R.id.list_shop);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
for (int i = 0; i < cloth.length; i++) {
Shops shopsList = new Shops(cloth[i], wood[i], metal[i]);
shops.add(shopsList);
}
ShopsAdapter adapter = new ShopsAdapter(shops);
recyclerView.setAdapter(adapter);
}
}
代码类列表
public class Shops {
String cloth, wood, metal;
public Shops(String cloth, String wood, String metal) {
this.cloth = cloth;
this.wood = wood;
this.metal = metal;
}
}
代码类适配器
public class ShopsAdapter extends RecyclerView.Adapter<ShopsAdapter.ShopsHolder> {
private List<Shops> shopsList;
public ShopsAdapter(List<Shops> shops) {
this.shopsList = shops;
}
@Override
public ShopsHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View row = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.template_recycler_view, viewGroup, false);
ShopsHolder holder = new ShopsHolder(row);
return holder;
}
@Override
public void onBindViewHolder(ShopsHolder holder, int i) {
Shops shops = shopsList.get(i);
holder.cloth.setText(shops.cloth);
holder.wood.setText(shops.wood);
holder.metal.setText(shops.metal);
}
@Override
public int getItemCount() {
return shopsList.size();
}
class ShopsHolder extends RecyclerView.ViewHolder {
private TextView cloth, wood, metal;
public ShopsHolder(View itemView) {
super(itemView);
cloth = itemView.findViewById(R.id.cloth);
wood = itemView.findViewById(R.id.wood);
metal = itemView.findViewById(R.id.metal);
}
}
}
如果您需要XML代码,我会放在另一个回复中。
最佳答案
使用 getters() 和 setters() 创建模型/POJO 类,如下所示
public class Shops {
private String cloth;
private String wood;
private String metal;
public Shops(String cloth, String wood, String metal) {
this.cloth = cloth;
this.wood = wood;
this.metal = metal;
}
public String getCloth() {
return cloth;
}
public void setCloth(String cloth) {
this.cloth = cloth;
}
public String getWood() {
return wood;
}
public void setWood(String wood) {
this.wood = wood;
}
public String getMetal() {
return metal;
}
public void setMetal(String metal) {
this.metal = metal;
}
}
现在全局声明 ArrayList 并向其中添加项目。当您单击按钮时,只需使用索引号即可访问它们。您可以为此运行 for 循环。
public class MainActivity extends AppCompatActivity {
private List<Shops> shops;
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
shops= new ArrayList<>();
addItem();
Button button = findViewById(R.id.get_item);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*
I want when I press the button
The items are called
*/
shops.get(1).getCloth();
shops.get(1).getWood();
shops.get(1).getMetal();
// do whatever you want with them
}
});
}
public void addItem() {
String[] cloth = {"Silk", "Cotton", "Linen"};
String[] wood = {"Sandal", "Jawi", "Pine"};
String[] metal = {"Window", "door", "roof"};
RecyclerView recyclerView = findViewById(R.id.list_shop);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
for (int i = 0; i < cloth.length; i++) {
Shops shopsList = new Shops(cloth[i], wood[i], metal[i]);
shops.add(shopsList);
}
关于android - 从 RecyclerView 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53154171/