Android 单击按钮将ArrayList从适配器传递到活动

Android 单击按钮将ArrayList从适配器传递到活动,android,listview,arraylist,serializable,android-bundle,Android,Listview,Arraylist,Serializable,Android Bundle,我需要一些帮助,我已经查看了其他问题,但找不到适当的解决方案,我想显示一个列表(RecyclerView),该列表来自一个适配器列表中的项目单击发送捆绑信息。(一个列表在第一个列表的项目点击时填充另一个列表) 以下是我遇到问题的代码 这来自ArrayList中的FirstActivity解析Json JSONArray complainJsonArray= jsonObj.getJSONArray("complains"); Arr

我需要一些帮助,我已经查看了其他问题,但找不到适当的解决方案,我想显示一个列表(RecyclerView),该列表来自一个适配器列表中的项目单击发送捆绑信息。(一个列表在第一个列表的项目点击时填充另一个列表)
以下是我遇到问题的代码

这来自ArrayList中的FirstActivity解析Json

JSONArray complainJsonArray= jsonObj.getJSONArray("complains");
                                ArrayList<MaintanceModel.UserComplain> listdata = new ArrayList<MaintanceModel.UserComplain>();
                                for (int k = 0; k<complainJsonArray.length(); k++){
                                    JSONObject complainJObject = complainJsonArray.getJSONObject(k);
                                    listdata.add(new MaintanceModel.UserComplain(Integer.parseInt(complainJObject.getString("id"))
                                            ,complainJObject.getString("description")
                                            ,complainJObject.getString("created_at")));
                                }
MaintanceModel maintanceModel = new MaintanceModel();
maintanceModel.setComplains(listdata);
maintanceModelArrayList.add(maintanceModel);
     public class MaintanceModel implements Serializable{ 
               private ArrayList<UserComplain> complains;

         public MaintanceModel() {
            }
         public ArrayList<UserComplain> getComplains() {
            return complains;
        }

        public void setComplains(ArrayList<UserComplain> complains) {
            this.complains = complains;
        }

    public MaintanceModel (String mainRefNum, ArrayList<UserComplain> complains){
    this.complains=complains;
    this.mainRefNum = mainRefNum;
            }

     public static class UserComplain{

            public final String complainDescr,complaiCreateDate;
            public final int complainId;

            public UserComplain(int complainId, String complainDescr, String complaiCreateDate){

                this.complainId=complainId;
                this.complainDescr=complainDescr;
                this.complaiCreateDate=complaiCreateDate;
            }
}
public class MaintenanceAdapter extends RecyclerView.Adapter<MaintenanceAdapter.ViewHolder>  {
    private Context mContext;
    List<MaintanceModel> maintanceModelList = new ArrayList<MaintanceModel>();
    public MaintenanceAdapter(Context mContext, ArrayList<MaintanceModel> items) {
        this.mContext = mContext;
        maintanceModelList = items;
    }
public void onBindViewHolder(final ViewHolder holder, final int position) {
        final MaintanceModel maintanceModel= maintanceModelList.get(position);

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

                 Bundle bundle = new Bundle();
                    bundle.putString("Ref_ID",maintanceModelList.get(position).getMainRefNum());
                    bundle.putString("Customer_Name",maintanceModelList.get(position).getMainUserName());
                    bundle.putString("Created_Date",maintanceModelList.get(position).getMainCreateDate());
                    bundle.putSerializable("ARRAYLIST",maintanceModelList.get(position).getComplains());


                    Intent itemClick = new Intent(mContext, MaintenanceDetail.class);
                    itemClick.putExtras(bundle);
                      itemClick.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    itemClick.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                     itemClick.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    mContext.startActivity(itemClick);

                }

        });

}
public class MaintenanceDetail extends AppCompatActivity {
List<MaintanceModel> maintanceModelList;


protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maintenance_detail);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        Intent intent = this.getIntent();
        Bundle bundle = intent.getExtras();
String refarnceNumber = getIntent().getExtras().getString("Ref_ID");

 List<MaintanceModel> complainList = (List<MaintanceModel>)bundle.getSerializable("ARRAYLIST");  <<< Here I want to received the list items and then set in to adapter 

}
 FATAL EXCEPTION: main
                                                                        Process: com.XYC.com, 
                                                                                        java.lang.RuntimeException: Parcel: unable to marshal value com.xxxx.xxx.xxx.model.MaintanceModel$UserComplain@83539ee                                                                        at android.os.Parcel.writeValue(Parcel.java:1397)
                                                                                            at android.os.Parcel.writeList(Parcel.java:738)
                                                                                            at android.os.Parcel.writeValue(Parcel.java:1344)
                                                                                            at android.os.Parcel.writeArrayMapInternal(Parcel.java:665)
                                                                                            at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
                                                                                            at android.os.Bundle.writeToParcel(Bundle.java:1079)
                                                                                            at android.os.Parcel.writeBundle(Parcel.java:690)
                                                                                            at android.content.Intent.writeToParcel(Intent.java:7793)
                                                                                            at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2639)
                                                                           at android.app.Instrumentation.execStartActivity(Instrumentation.java:1507)
                                                                                            at android.app.ContextImpl.startActivity(ContextImpl.java:677)
                                                                                            at android.app.ContextImpl.startActivity(ContextImpl.java:659)
                                                                                            at android.content.ContextWrapper.startActivity(ContextWrapper.java:331)
                                                                                            at com.xxxx.xxx.xxxx.adapter.MaintenanceAdapter$1.onClick(MaintenanceAdapter.java:74)
                                                                                            at android.view.View.performClick(View.java:5198)

此类
usercontrim
需要实现serializableokey并将其从父类中删除???@MarkKeen comment是正确的,但是你应该使用Parcelable而不是Serializable。是的@Ibrahim我同意我要将其转换为Parcelable,但我想先测试它:)首先感谢@MarkKeen指出它现在工作的问题:)-如何使用Recycler视图设置它工作吗?显示项目的步骤-