Я пытаюсь передать пару значений из действия «Пример» в другое действие «MemberExample.class»
Я знаю, что это кажется простым вопросом, на который уже много раз отвечали , но, как показано в приведенном ниже коде, и я попытаюсь объяснить, это не так просто, как кажется.
Ниже приведен первый код активности, который я пытаюсь передать, но он получает «mImagesUrl», «mName», «mParties» из адаптера представления переработчика. Я не уверен, где в каком-либо классе я должен поместить методы "putIntent" и "getExtras". Положить ли их в адаптер RecyclerView или в класс активности?
Example.class
public class Example extends AppCompatActivity {
private ArrayList<String> mNames = new ArrayList<>();
private ArrayList<String> mParties = new ArrayList<>();
private ArrayList<String> mImageUrls = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example);
getImages();
}
private void getImages() {
mImageUrls.add("https://data.oireachtas.ie/ie/oireachtas/member/id/Kathleen-Funchion.D.2016-10-03/image/large");
mNames.add("Kathleen Funchion");
mParties.add("Sinn Féin");
mImageUrls.add("https://data.oireachtas.ie/ie/oireachtas/member/id/John-Paul-Phelan.S.2002-09-12/image/large");
mNames.add("John Paul Phelan");
mParties.add("Fine Gael");
initExampleRV();
}
private void initExampleRV() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
RecyclerView recyclerView = findViewById(R.id.rv_Example);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(this, MemberExample.class);
//?????????????????????
}
});
ClareMembersRecyclerView adapter = new ClareMembersRecyclerView(this, mNames, mParties, mImageUrls);
recyclerView.setAdapter(adapter);
}
}
Adapter.class
public class RecyclerView extends RecyclerView.Adapter<ClareMembersRecyclerView.ViewHolder>{
private static final String TAG = "ClareMembersRV";
//vars
private ArrayList<String> mNames = new ArrayList<>();
private ArrayList<String> mParties = new ArrayList<>();
private ArrayList<String> mImageUrls = new ArrayList<>();
private Context mContext;
public RecyclerView(Context context, ArrayList<String> names, ArrayList<String> parties, ArrayList<String> imageUrls){
mNames = names;
mParties = parties;
mImageUrls = imageUrls;
mContext = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Log.d(TAG, "onCreateViewHolder: called.");
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_members_clare, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Log.d(TAG, "onBindViewHolder: called.");
Glide.with(mContext)
.asBitmap()
.load(mImageUrls.get(position))
.into(holder.image);
holder.name.setText(mNames.get(position));
holder.party.setText(mParties.get(position));
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: clicked on an image" + mNames.get(position));
Toast.makeText(mContext, "Profile: " + mNames.get(position), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(mContext, MembersMapDetailed.class);
intent.putExtra(mNames.get(position),mParties,mImageUrls);
}
});
}
@Override
public int getItemCount() {
return mImageUrls.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
CircleImageView image;
TextView name;
TextView party;
public ViewHolder(View itemView) {
super(itemView);
image = itemView.findViewById(R.id.imgClareCircle);
name = itemView.findViewById(R.id.tvClareName);
party = itemView.findViewById(R.id.tvClareParty);
}
}