我的活动之间的互动:


在listview.java中的listview中单击一行>
转到Edit.java以编辑有关该特定行的信息>
完成编辑后,单击按钮,将完成edit.java活动>
返回到listview.java。


但是,从edit.java返回到listview.java时,它不会显示先前单击的listview的特定行的新更新信息。

仅当我离开listview活动并再次返回时,信息才被新更新。

listview.java:

    MyItems mi;
    private ArrayList<SalesItemInformationLV> displayiteminfo;

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_list_sale_item);
    mi = MyItems.getInstance();
            displayiteminfo = mi.retrieveAllForlist(getApplicationContext());

            final ArrayAdapter<SalesItemInformationLV> adapter = new itemArrayAdapter(this, 0, displayiteminfo);


            final ListView listView = (ListView)findViewById(R.id.customListview);
            listView.setAdapter(adapter);

   // adapter.notifyDataSetChanged(); Place this code here but it does not work

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                SalesItemInformationLV saleitem2 = displayiteminfo2.get(info.position);

        String namevalue = saleitem2.getItemname();
        Double costpvalue = saleitem2.getCostprice();
        Double sellpvalue = saleitem2.getSellingprice();
        int qtyvalue = saleitem2.getItemquantity();
        String datevalue = saleitem2.getDatesold();
        int staffvalue = saleitem2.getStaffdiscount();

        Intent myintent = new Intent(List.this, Edit.class);
        myintent.putExtra("array", saleitem2);
        myintent.putExtra("itemname", namevalue);
        myintent.putExtra("itemcp", costpvalue);
        myintent.putExtra("itemsp", sellpvalue);
        myintent.putExtra("itemqty", qtyvalue);
        myintent.putExtra("itemds", datevalue);
        myintent.putExtra("itemsstaffdis", staffvalue);

        startActivity(myintent);

}

最佳答案

来自步骤1、2和3的数据流。

listview.java:

// Step 1 (Send data to edit.class)
Intent i = new Intent(this, Edit.class);
startActivityForResult(i, 1);

// Step 3 (Receive new data)
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1) {
        if(resultCode == RESULT_OK) {
            String strEditText = data.getStringExtra("key");

           // update your listview in here with new data
        }
    }
}


Edit.java:

// Step 2 (Edit data in here, and send to listview.java with setResult)
Intent intent = new Intent();
intent.putExtra("key", "value")
setResult(RESULT_OK, intent);
finish();

07-25 22:08
查看更多