gpt4 book ai didi

java - 将所有 recyclerview 项目从 Activity1 传递到 Activity2 recyclerview 项目

转载 作者:行者123 更新时间:2023-12-02 03:29:52 26 4
gpt4 key购买 nike

我有 ActivityCourses 和 ActivityNewCourse。 ActivityCourses 包含用户制作的自定义类(class)的列表(recyclerview),而 ActivityNewCourse 显然是用户制作这些自定义类(class)的 Activity 。

ActivityNewCourse 包含原始数据(类(class)名称和洞数)这些是我传递给 ActivityCourses 的数据,并在其回收器 View 中创建新项目(因此新项目名称是从 ActivityNewCourse 传递的类(class)名称)。

我遇到的问题是 ActivityNewCourse 还包含 recyclerview,并且包含明显独特的项目。我需要从 ActivityNewCourse 获取所有这些项目,并将它们存储(未显示)在同一个项目中,我在 ActivityCourses 中发送原始数据。

我尝试使用 NewCourseAdapter 中的接口(interface),将这些项目从 ActivityNewCourse recyclerview 传递到我的 ActivityCourses 项目,但问题是我需要所有这些项目,而不仅仅是 1. 以及“保存类(class)”按钮“用户点击的显然是保存 ActivityNewCourse 中的所有数据,位于这些项目所在的回收器 View 之外。

这是我的新类(class)适配器

public class NewCourseAdapter extends RecyclerView.Adapter<NewCourseAdapter.NewCourseViewHolder> {
private ArrayList<NewCourseItem> mNewCourseList;
private OnItemClickListener mListener;

public interface OnItemClickListener {
void onMinusClick(int position);
void onPlusClick(int position);
}

public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}

public static class NewCourseViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView1, mTextView2;
public ImageView mImageView1, mImageView2;

public NewCourseViewHolder(@NonNull View itemView, final OnItemClickListener listener) {
super(itemView);
mTextView1 = itemView.findViewById(R.id.hole_number);
mTextView2 = itemView.findViewById(R.id.par_number);
mImageView1 = itemView.findViewById(R.id.item_minus_btn);
mImageView2 = itemView.findViewById(R.id.item_plus_btn);

mImageView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (listener != null) {
int position = getAdapterPosition();

if (position != RecyclerView.NO_POSITION) {
listener.onMinusClick(position);
}
}
}
});

mImageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (listener != null) {
int position = getAdapterPosition();

if (position != RecyclerView.NO_POSITION) {
listener.onPlusClick(position);
}
}
}
});
}
}

public NewCourseAdapter(ArrayList<NewCourseItem> newCourseList) {
mNewCourseList = newCourseList;
}

@NonNull
@Override
public NewCourseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.new_course_item, parent, false);
NewCourseViewHolder evh = new NewCourseViewHolder(v, mListener);
return evh;
}

@Override
public void onBindViewHolder(@NonNull NewCourseViewHolder holder, int position) {
NewCourseItem currentItem = mNewCourseList.get(position);

holder.mTextView1.setText(currentItem.getText1());
holder.mTextView2.setText(currentItem.getText2());
holder.mImageView1.setImageResource(currentItem.getImageMinus());
holder.mImageView2.setImageResource(currentItem.getImagePlus());
}

@Override
public int getItemCount() {
return mNewCourseList.size();
}
}

以下是我如何将原始数据从 Activity 新类(class)传递到 Activity 类(class)

save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
courseName = findViewById(R.id.course_name_input);
number = findViewById(R.id.number_of_holes_number);
String intentCourseName = courseName.getText().toString().trim();
String holeNumber = number.getText().toString().trim();

Intent intent = new Intent(ActivityNewCourse.this, ActivityCourses.class);
intent.putExtra("COURSENAME", intentCourseName);
intent.putExtra("HOLENUMBER", holeNumber);
startActivity(intent);
}
});

Activity 类(class)如何响应数据

public void addItem() {
if (getIntent().getStringExtra("COURSENAME") != null) {
mCourselist.add(new CoursesItem(getIntent().getStringExtra("COURSENAME"), "Holes:", getIntent().getStringExtra("HOLENUMBER"), R.drawable.ic_delete));
}
}

我不确定这段代码是否有帮助......单击保存按钮时,我是否能够从 ActivityNewCourse 发送整个数组列表?我不知道,我有点死胡同,我不知道该怎么做,所以任何关于在这种情况下该怎么做的建议都会有所帮助......

最佳答案

您是否尝试过使用intent.putStringArrayListExtra("ARRAYNAME", arrayName);尝试将数据放入 ArrayList 中并按如下方式发送:

Intent intent = new Intent(ActivityNewCourse.this, ActivityCourses.class);
intent.putStringArrayListExtra("ARRAYNAME", arrayName);
startActivity(intent);

并像这样检索它:

ArrayList<String> listOfData = getIntent().getStringArrayListExtra("ARRAYNAME");

希望有帮助。

已更新

使用可序列化:

首先将NewCourseItem扩展为Serialized,然后:

Bundle bundle = new Bundle();
bundle.putSerializable("KEYNAME", new NewCourseItem("str1", "str2", "imglink", "imglink"));
intent.putExtras(bundle);
startActivity(intent);

像这样检索它:

Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
NewCourseItem item = (NewCourseItem)bundle.getSerializable("KEYNAME");

关于java - 将所有 recyclerview 项目从 Activity1 传递到 Activity2 recyclerview 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56891327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com