gpt4 book ai didi

java - 在另一个 Activity 中使用 RecyclerView 适配器的 ArrayList

转载 作者:行者123 更新时间:2023-12-01 16:41:31 24 4
gpt4 key购买 nike

我正在尝试使用创建并填充 Recyclerviewadapter 的 Arraylist 来执行另一个 Activity。我尝试使用 Intent、Getters、将一个 Arraylist 与另一个进行匹配,但没有任何效果。

适配器代码:

public class MyLenguajeRecyclerViewAdapter extends RecyclerView.Adapter<MyLenguajeRecyclerViewAdapter.ViewHolder> {

private final List<Lenguaje> lenguajeList;
private final OnLenguajeInteractionListener mListener;
private Context ctx;
final ArrayList<String> lenguajes = new ArrayList<>();


public MyLenguajeRecyclerViewAdapter(Context context, List<Lenguaje> items, OnLenguajeInteractionListener listener) {
ctx = context;
lenguajeList = items;
mListener = listener;
}

我在其中填充 Arraylist 的适配器内的代码:

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.mItem = lenguajeList.get(position);
holder.textViewNombre.setText(holder.mItem.getTitulo());
holder.logo.setImageResource(holder.mItem.getIdImagen());
holder.checkBoxLenguaje.setChecked(holder.mItem.isChecked());


if (position % 2 == 0) {
holder.mView.setBackgroundColor(ContextCompat.getColor(ctx, R.color.azulLigero));
} else {
holder.mView.setBackgroundColor(ContextCompat.getColor(ctx, R.color.azulCeleste));
}


holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

CheckBox cb = v.findViewById(R.id.checkBoxLenguaje);
cb.setChecked(!cb.isChecked());
TextView tv = v.findViewById(R.id.textViewLenguaje);

if (cb.isChecked()) {
if (!lenguajes.contains(tv.getText().toString())) {
lenguajes.add(tv.getText().toString());
}
} else if (!cb.isChecked()) {
if (lenguajes.contains(tv.getText().toString())) {
lenguajes.remove(tv.getText().toString());
}
}
}
});
}

我想在其中浏览 Arraylist 的 Activitylenguajes 代码:

            Empleado emp = new Programador(nombre, email, password, genero, fechaNacimiento, lenguajes);

//for (int i = 0; i < lenguajes.size(); i++) {
AlertDialog.Builder ad = new AlertDialog.Builder(LenguajesActivity.this);
ad.setTitle("Lenguajes elegidos");
ad.setMessage(emp.toString());
ad.setCancelable(true);
ad.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(LenguajesActivity.this, LoginActivity.class);
startActivity(intent);
}
});
ad.show();
}
//}

这是我运行 Activitylenguajes 时显示的图像。包含一个 fragment ,其中我显示了可以观察到的语言列表

https://i.postimg.cc/v8Pwxs17/lenguajes.png

在此我显示了警报,其中显示了已注册程序员的数据及其假定的语言。 当您在 LanguagesActivity 中按下按钮时,会显示此警报,当您单击“确定”时,它将转至 LoginActivity。

https://i.postimg.cc/rwdn6cpj/seleccionar.png

我在选择语言时添加了调试器的捕获。

我想要的是将 ArrayList(此时大小为 3)传递给 LanguagesActivity,这是它的上下文,以便当我单击选择按钮时能够遍历它LanguagesActivity 本身。]

https://i.postimg.cc/ZKWFnHhK/debugger.png

为了对语言执行相同的操作,我使用了 Listview,它对我来说可以正常工作,但在这种情况下,我需要使用 Recyclerview。

谢谢。

最佳答案

完成后将列表更改为字符串数组并传递字符串数组:

ad.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override

public void onClick(DialogInterface dialog, int which) {

//change list to a string array
String[] array = new String[lenguajes.size()];
for(int i=0 ; i<lenguajes.size() ; i++){
array[i] = lenguajes.get(i);
}


//open new activity and pass the array
Intent intent = new Intent(LenguajesActivity.this, LoginActivity.class);
intent.putExtra("array", array);
startActivity(intent);

}
});

onCreate()LoginActivity中:

class LoginActivity .........{

private ArrayList<String> lenguajes = new ArrayList<>();

//in onCreate() method:

//get the passed string array
String[] array = getIntent().getStringArrayExtra("array");

//change string array back to a list
for(String s : array){
lenguajes.add(s);
}

//at this point its like you just passed 'lenguajes'


}

关于java - 在另一个 Activity 中使用 RecyclerView 适配器的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61851604/

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