我正在从适配器中检索值,并在 ArrayList<String>
中存储值。我正在将arraylist转换为字符串阵列并将阵列从recyclerview apapter转换为其他片段,但是我在其他 Fragment
中获得了null值。
这是将ArrayList<String>
转换为字符串数组的代码并发送到其他片段
String []tablesId=new String[tableId.size()];
tablesId=tableId.toArray(tablesId);
TableAssignConfirm confirm=new TableAssignConfirm();
Bundle bundle=new Bundle();
bundle.putStringArray("tablesIds",tablesId);
confirm.setArguments(bundle);
这是在其他片段中从 Bundle
检索值的代码
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v=inflater.inflate(R.layout.table_assign_confirm, container, false);
// Bundle bundle=getArguments().getStringArray("tableIds");
String []getTables=getArguments().getStringArray("tableIds");
Log.i("ids", Arrays.toString(getTables));
return v;
}
如何解决此问题并获得值?
尝试此
Bundle bundle=getArguments();
if(bundle!=null){
String []getTables=bundle.getStringArray("tableIds");
}
在您的代码中
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v=inflater.inflate(R.layout.table_assign_confirm, container, false);
Bundle bundle=getArguments();
if(bundle!=null){
String []getTables=bundle.getStringArray("tableIds");
}
Log.i("ids", Arrays.toString(getTables));
return v;
}
在适配器中创建一个接口
public interface OnItemClickListener {
void onItemClicked(int position, ArrayList<DeliveryTimeSlot> list);
}
在您的适配器调用中,来自fragment
Adapter adapter = new Adapter(context, list, new Adapter.OnItemClickListener() {
@Override
public void onItemClicked(int position, ArrayList<String> list) {
// Handle list and perform actions here
}
});
在您的适配器上
private OnItemClickListener onItemClickListener; // Global scope
在构造函数中:
this.onItemClickListener = onItemClickListener;
在您的项目单击事件中:
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListener.onItemClicked(position, _list);
}
});
检查您的getStringArray()
值。应该是getStringArray("tablesIds")
。下次要更加专心((