如何将字符串数组从RecyclerView适配器传递到Android中的片段

时间:2018-04-03 05:26:05

标签: android android-fragments arraylist android-recyclerview android-bundle

我正在从Adapter中检索值并在ArrayList<String>中存储值。我正在将ArrayList转换为String Array并将Array从RecyclerView Adapter传递给Other Fragment,但我在其他Fragment中获取空值。
这是将ArrayList<String>转换为String Array并发送到Other Fragment

的代码
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;
    }  

如何解决此问题并获取值?

3 个答案:

答案 0 :(得分:1)

试试这个

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;
    }  

答案 1 :(得分:0)

检查您的getStringArray()值。它应该是getStringArray("tablesIds")。下次要更加注意))

答案 2 :(得分:0)

  

在适配器中创建一个界面

input
  来自片段

的适配器调用中的

public interface OnItemClickListener {
  void onItemClicked(int position, ArrayList<DeliveryTimeSlot> list);
}
  适配器上的

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;