【发布时间】:2020-12-01 13:41:18
【问题描述】:
我实现了一个回收器视图,它工作正常,但是当我想处理按钮的单击时,我在回收器视图片段中使用了一个意图,但似乎我不能在这里使用意图将参数传递给一个活动并导航到它
//我的回收器视图适配器
package com.example.miniprojetandroid.adapters;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
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 java.util.ArrayList;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.miniprojetandroid.R;
import com.example.miniprojetandroid.models.Bike;
import com.example.miniprojetandroid.ui.activities.BikeDetails;
import com.example.miniprojetandroid.ui.activities.MainActivity;
public class BikesAdapter extends RecyclerView.Adapter<BikesAdapter.BikesViewHolder> {
private final ArrayList<Bike> bikes;
private Context mContext;
public BikesAdapter(Context mContext, ArrayList<Bike> bikes) {
this.mContext = mContext ;
this.bikes = bikes;
}
@NonNull
@Override
public BikesAdapter.BikesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View mItemView = LayoutInflater.from(mContext).inflate(R.layout.bike_list_item, parent, false);
return new BikesViewHolder(mItemView, this);
}
@Override
public void onBindViewHolder(@NonNull BikesAdapter.BikesViewHolder holder, int position) {
final Bike singleItem = bikes.get(position);
holder.BikeName.setText(singleItem.getModel());
holder.BikeImage.setBackgroundResource(singleItem.getImage());
holder.bikeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(this, BikeDetails.class);
intent.putExtra("bike_id", singleItem.getId());
intent.putExtra("model", singleItem.getModel());
intent.putExtra("type", singleItem.getType());
intent.putExtra("price", singleItem.getPrice());
intent.putExtra("image", singleItem.getImage());
startActivity(intent);
finish();
}
});
holder.BikeImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,singleItem.getModel(),Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return bikes.size();
}
public class BikesViewHolder extends RecyclerView.ViewHolder {
public final TextView BikeName;
public final ImageView BikeImage;
public final Button bikeView;
final BikesAdapter mAdapter;
public BikesViewHolder(@NonNull View itemView, BikesAdapter mAdapter) {
super(itemView);
this.BikeName = itemView.findViewById(R.id.bikeName);
this.BikeImage = itemView.findViewById(R.id.bikeImage);
this.bikeView = itemView.findViewById(R.id.btn_view);
this.mAdapter = mAdapter;
}
}
}
如何在单击 bikeView 按钮后使用意图参数导航到 BikeDetails? 为什么这里无法识别意图?
整个问题出在以下几行:
holder.bikeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(this, BikeDetails.class);
intent.putExtra("bike_id", singleItem.getId());
intent.putExtra("model", singleItem.getModel());
intent.putExtra("type", singleItem.getType());
intent.putExtra("price", singleItem.getPrice());
intent.putExtra("image", singleItem.getImage());
startActivity(intent);
finish();
}
});
【问题讨论】:
标签: android android-intent android-recyclerview