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