【发布时间】:2020-11-04 16:21:19
【问题描述】:
我正在尝试将在 mainactivity.java 中设置的数据传递给另一个活动(infoPage.java),但我似乎无法让它工作。
MainActivity.java
data = new ArrayList<>();
data.add( new CarData("Toyota Camry 2010 2.4V","Automatic","5 Seater","Petrol/Full","RM 40 /h",R.drawable.camry2010));
recyclerView= findViewById(R.id.browsedRecycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new Adapter(this,data);
recyclerView.setAdapter(adapter);
模型类的构造函数
public CarData(String title , String trans, String seats, String fuel, String price, int imgID) {
this.title = title;
this.trans = trans;
this.seats = seats;
this.fuel = fuel;
this.price = price;
this.imgID = imgID;
}
适配器类
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private LayoutInflater layoutInflater;
private List<CarData> data;
public Adapter(Context context, List<CarData>data) {
this.layoutInflater = LayoutInflater.from(context);
this.data = data;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = layoutInflater.inflate(R.layout.itemlist,viewGroup,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
//to bind the textview with data received
String title = data.get(position).getTitle();
String trans = data.get(position).getTrans();
String seat = data.get(position).getSeats();
String fuel = data.get(position).getFuel();
String price = data.get(position).getPrice();
int imgid = data.get(position).getImgID();
holder.texttitle.setText(title);
holder.trans.setText(trans);
holder.seats.setText(seat);
holder.fuel.setText(fuel);
holder.price.setText(price);
holder.imageView.setImageResource(imgid);
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView texttitle,trans,seats,fuel,price;
ImageView imageView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(view.getContext(),infoPage.class);
i.putExtra("title", (data.get(getAbsoluteAdapterPosition())));
view.getContext().startActivity(i);
}
});
texttitle = itemView.findViewById(R.id.textTitle);
trans = itemView.findViewById(R.id.carTrans);
seats = itemView.findViewById(R.id.seats);
fuel = itemView.findViewById(R.id.fuel);
price = itemView.findViewById(R.id.price);
imageView=itemView.findViewById(R.id.itemImage);
}
}
我的 infopage.java 基本上什么都没有,只是 textviews 和 imageviews 的声明 infoPage.java
TextView textView;
ImageView carimage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cars_info_page);
textView=findViewById(R.id.detailText);
carimage=findViewById(R.id.carsimg);
我自己弄明白了,谢谢大家的帮助!
【问题讨论】:
标签: java android android-recyclerview adapter