Android 更新通过Parcelable intent传递的对象

Android 更新通过Parcelable intent传递的对象,android,arrays,android-intent,indexing,parcelable,Android,Arrays,Android Intent,Indexing,Parcelable,我是Android新手,我还在学习。我目前有一个列表视图,可以让你点击一个项目。单击一个项目将打开一个新的意图,显示关于该项目的额外信息 我遇到的问题是如何将更新后的值返回到自定义对象中,并以正确的索引更新数组中的值 例如: 我将添加一个项目并将其数量设置为2。这将出现在我的ListView中。伟大的我决定我需要3而不是2,所以我点击该项目打开新的活动,查看数量中的2,将其更新为3并点击save。单击“保存”按钮,我想返回到我的listview,并在那里显示更新的数量值,同时在索引处的数组中进行

我是Android新手,我还在学习。我目前有一个列表视图,可以让你点击一个项目。单击一个项目将打开一个新的意图,显示关于该项目的额外信息

我遇到的问题是如何将更新后的值返回到自定义对象中,并以正确的索引更新数组中的值

例如: 我将添加一个项目并将其数量设置为2。这将出现在我的ListView中。伟大的我决定我需要3而不是2,所以我点击该项目打开新的活动,查看数量中的2,将其更新为3并点击save。单击“保存”按钮,我想返回到我的listview,并在那里显示更新的数量值,同时在索引处的数组中进行更新

分段代码:

ItemList类中listview的Onclick方法

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        //@Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                                int arg2, long arg3) {

            bean = (CustomObject) listview.getItemAtPosition(arg2);

            Intent in1 = new Intent(Itemlist.this, SingleItem.class);
            in1.putExtra("ActivityObject", bean);
            startActivity(in1);
        }
    });
单项目类

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_singleitem);

    siname = (TextView) findViewById(R.id.siname);
    sipartno = (TextView) findViewById(R.id.sipartno);
    siquantity = (EditText) findViewById(R.id.siq);
    sirrp = (EditText) findViewById(R.id.sirrp);
    siglcode = (TextView) findViewById(R.id.siglcode);
    sidesc = (EditText) findViewById(R.id.sidesc);
    update = (Button) findViewById(R.id.siupdate);

    Bundle b = getIntent().getExtras();
    CustomObject itemInfo = b.getParcelable("ActivityObject");

    siname.setText(itemInfo.getItemName());
    sipartno.setText(itemInfo.getItemPartNo());
    siquantity.setText(itemInfo.getItemQuantity());
    sirrp.setText(itemInfo.getItemPrice());
    siglcode.setText(itemInfo.getItemGLCode());
    sidesc.setText(itemInfo.getItemDesc());
}
自定义对象类

public class CustomObject implements Parcelable {

private String itemName;
private String itemPartNo;
private String itemQuantity;
private String itemPrice;
private String itemGLCode;
private String itemDesc;

public CustomObject(Parcel source){
        /*
         * Reconstruct from the Parcel
         */
    //Log.v(TAG, "ParcelData(Parcel source): time to put back parcel data");
    //id = source.readInt();
    itemName = source.readString();
    itemPartNo = source.readString();
    itemQuantity = source.readString();
    itemPrice = source.readString();
    itemGLCode = source.readString();
    itemDesc = source.readString();

}

public CustomObject(String prop1, String prop2, String prop3, String prop4, String prop5, String prop6) {
    this.itemName = prop1;
    this.itemPartNo = prop2;
    this.itemQuantity = prop3;
    this.itemPrice = prop4;
    this.itemGLCode = prop5;
    this.itemDesc = prop6;
}

public String getItemName() {
    return itemName;
}

public String getItemPartNo() { return itemPartNo; }

public String getItemQuantity() {
    return itemQuantity;
}

public String getItemPrice() {
    return itemPrice;
}

public String getItemGLCode() {return itemGLCode;}

public String getItemDesc() {return itemDesc;}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(itemName);
    dest.writeString(itemPartNo);
    dest.writeString(itemQuantity);
    dest.writeString(itemPrice);
    dest.writeString(itemGLCode);
    dest.writeString(itemDesc);
}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
    public CustomObject createFromParcel(Parcel in) {
        return new CustomObject(in);
    }

    public CustomObject[] newArray(int size) {
        return new CustomObject[size];
    }
};
}


我希望能够更改SingleItem类中的数量,单击Update按钮,然后让它加载itemlist类和item列表中的更新值。

使用为活动定义的自己的回调接口的
片段将更有效。但是,如果您想使用
活动
方法,请使用
startActivityForResult()
并让您的详细信息
活动
发回结果
意图
,以及任何更新的对象内容。

谢谢。没有想到碎片。现在我要去读一读:)
public class CustomObject implements Parcelable {

private String itemName;
private String itemPartNo;
private String itemQuantity;
private String itemPrice;
private String itemGLCode;
private String itemDesc;

public CustomObject(Parcel source){
        /*
         * Reconstruct from the Parcel
         */
    //Log.v(TAG, "ParcelData(Parcel source): time to put back parcel data");
    //id = source.readInt();
    itemName = source.readString();
    itemPartNo = source.readString();
    itemQuantity = source.readString();
    itemPrice = source.readString();
    itemGLCode = source.readString();
    itemDesc = source.readString();

}

public CustomObject(String prop1, String prop2, String prop3, String prop4, String prop5, String prop6) {
    this.itemName = prop1;
    this.itemPartNo = prop2;
    this.itemQuantity = prop3;
    this.itemPrice = prop4;
    this.itemGLCode = prop5;
    this.itemDesc = prop6;
}

public String getItemName() {
    return itemName;
}

public String getItemPartNo() { return itemPartNo; }

public String getItemQuantity() {
    return itemQuantity;
}

public String getItemPrice() {
    return itemPrice;
}

public String getItemGLCode() {return itemGLCode;}

public String getItemDesc() {return itemDesc;}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(itemName);
    dest.writeString(itemPartNo);
    dest.writeString(itemQuantity);
    dest.writeString(itemPrice);
    dest.writeString(itemGLCode);
    dest.writeString(itemDesc);
}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
    public CustomObject createFromParcel(Parcel in) {
        return new CustomObject(in);
    }

    public CustomObject[] newArray(int size) {
        return new CustomObject[size];
    }
};