主适配器无法应用于 Java 列表
Main Adapter Cannot be Applied to Java List
(list , this)
<= 此行会产生问题。
这是我的主要活动代码
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.example.foodorder.Adapters.MainAdapter;
import com.example.foodorder.Models.MainModel;
import com.example.foodorder.databinding.ActivityMainBinding;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
ArrayList<MainModel> list = new ArrayList<>();
list.add(new MainModel(R.drawable.tabba, "TableA", "2500", "Unique Table for Interior Lovers"));
list.add(new MainModel(R.drawable.tabbb, "TableB", "3500", "Unique Table for Interior Lovers"));
list.add(new MainModel(R.drawable.tabbd, "TableC", "4500", "Unique Table for Interior Lovers"));
list.add(new MainModel(R.drawable.tabbe, "TableD", "55500", "Unique Table for Interior Lovers"));
MainAdapter adapter = new MainAdapter(list , this);
binding.recyclerview.setAdapter(adapter);
}
}
主适配器代码
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.viewholder> {
ArrayList<MainModel> list;
Context context;
@NonNull
@Override
public viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.sample_mainfood,parent,false);
return new viewholder(view);
}
@Override
public void onBindViewHolder(@NonNull viewholder holder, int position) {
final MainModel model =list.get(position);
holder.mainName.setText(model.getName());
holder.imageView.setImageResource(model.getImage());
holder.price.setText(model.getPrice());
holder.description.setText(model.getDescription());
}
@Override
public int getItemCount() {
return list.size();
}
public class viewholder extends RecyclerView.ViewHolder{
ImageView imageView;
TextView mainName, price, description;
public viewholder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
imageView = itemView.findViewById(R.id.name);
imageView = itemView.findViewById(R.id.orderPrice);
imageView = itemView.findViewById(R.id.description);
}
}
}
这个是主模型
package com.example.foodorder.Models;
public class MainModel {
int image;
String name, price, description;
public MainModel(int image, String name, String price, String description) {
this.image = image;
this.name = name;
this.price = price;
this.description = description;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
我猜你忘了为 MainAdapter
class
创建构造函数
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.viewholder> {
ArrayList<MainModel> list;
Context context;
MainAdapter(ArrayList<MainModel> data, Context ctx) {
list = data;
context = ctx;
}
// ...
}
在这里,在您的代码中,您缺少 @Sergey 提到的构造函数,并且您在 onCreateViewHolder() 中传递了错误的上下文。您应该传递 parent.getContext();
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.viewholder> {
ArrayList<MainModel> list;
Context context;
MainAdapter(ArrayList<MainModel> data, Context ctx) {
list = data;
context = ctx;
}
@NonNull
@Override
public viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sample_mainfood,parent,false);
return new viewholder(view);
}
//...
}
(list , this)
<= 此行会产生问题。
这是我的主要活动代码
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.example.foodorder.Adapters.MainAdapter;
import com.example.foodorder.Models.MainModel;
import com.example.foodorder.databinding.ActivityMainBinding;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
ArrayList<MainModel> list = new ArrayList<>();
list.add(new MainModel(R.drawable.tabba, "TableA", "2500", "Unique Table for Interior Lovers"));
list.add(new MainModel(R.drawable.tabbb, "TableB", "3500", "Unique Table for Interior Lovers"));
list.add(new MainModel(R.drawable.tabbd, "TableC", "4500", "Unique Table for Interior Lovers"));
list.add(new MainModel(R.drawable.tabbe, "TableD", "55500", "Unique Table for Interior Lovers"));
MainAdapter adapter = new MainAdapter(list , this);
binding.recyclerview.setAdapter(adapter);
}
}
主适配器代码
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.viewholder> {
ArrayList<MainModel> list;
Context context;
@NonNull
@Override
public viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.sample_mainfood,parent,false);
return new viewholder(view);
}
@Override
public void onBindViewHolder(@NonNull viewholder holder, int position) {
final MainModel model =list.get(position);
holder.mainName.setText(model.getName());
holder.imageView.setImageResource(model.getImage());
holder.price.setText(model.getPrice());
holder.description.setText(model.getDescription());
}
@Override
public int getItemCount() {
return list.size();
}
public class viewholder extends RecyclerView.ViewHolder{
ImageView imageView;
TextView mainName, price, description;
public viewholder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
imageView = itemView.findViewById(R.id.name);
imageView = itemView.findViewById(R.id.orderPrice);
imageView = itemView.findViewById(R.id.description);
}
}
}
这个是主模型
package com.example.foodorder.Models;
public class MainModel {
int image;
String name, price, description;
public MainModel(int image, String name, String price, String description) {
this.image = image;
this.name = name;
this.price = price;
this.description = description;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
我猜你忘了为 MainAdapter
class
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.viewholder> {
ArrayList<MainModel> list;
Context context;
MainAdapter(ArrayList<MainModel> data, Context ctx) {
list = data;
context = ctx;
}
// ...
}
在这里,在您的代码中,您缺少 @Sergey 提到的构造函数,并且您在 onCreateViewHolder() 中传递了错误的上下文。您应该传递 parent.getContext();
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.viewholder> {
ArrayList<MainModel> list;
Context context;
MainAdapter(ArrayList<MainModel> data, Context ctx) {
list = data;
context = ctx;
}
@NonNull
@Override
public viewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sample_mainfood,parent,false);
return new viewholder(view);
}
//...
}