【问题标题】:listview data maintain after start new activity开始新活动后维护列表视图数据
【发布时间】:2017-04-14 05:36:58
【问题描述】:

我的应用中有两个活动 A 和 B。我正在使用json从我的listview中的api加载数据,并使用getter setter方法将该数据存储在listview中 在活动 A。 现在我想在启动 B 活动后在列表视图中维护数据,当我从 B 回到 A 活动时,我不会再次从 json 下载数据。

我现在通过 sotirng api 响应在字符串中执行此操作,然后从 B 回到 A 我将 json 字符串传递给适配器,但加载 listview 仍然需要时间

知道当我从 B 回到 A 时如何防止加载时间和立即获取数据。

这是我的活动代码 A

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_product_list);
    pref =getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    editor = pref.edit();

    itemCount_database = new ItemCount_database(this);
    item_adding_cart = new Item_adding_cart(this);


    String fromhome =pref.getString("from_product_view_back_Btn","");
    if(fromhome.equals("yes"))
    {
        editor.putString("from_product_view_back_Btn","no");
        editor.commit();
        overridePendingTransition(R.anim.right_in, R.anim.right_out);
        stored_json();

        recycler_adapter = new Product_list_Recycler_Adapter(this,datalist);
        recyclerView.setAdapter(recycler_adapter);
        recycler_adapter.setListener(ProductList_Activity.this);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());


    }
    else
    {
        overridePendingTransition(R.anim.left_in, R.anim.left_out);
        pDialog = new ProgressDialog(this);
        pDialog.setMessage("Loading...");
        pDialog.show();
        jsoncall();
    }

    initialised_actionbar();

    checkout = (TextView)findViewById(R.id.txt_checkout_product_list);
    txt_total_amount =(TextView)findViewById(R.id.total_amount_in_checkout_label);
    checkout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myint = new Intent(ProductList_Activity.this,Cart.class);
            startActivity(myint);
        }
    });
    footer =(LinearLayout) findViewById(R.id.footer);
    footer.setVisibility(View.GONE);
    cart_item_count =item_adding_cart.total_product_count(1);
    if(cart_item_count==0 )
    {
        footer.setVisibility(View.GONE);
        cart_count_background.setVisibility(View.GONE);
    }
    else
    {
        footer.setVisibility(View.VISIBLE);
        cart_count_background.setVisibility(View.VISIBLE);
    }

    wishlist_item_count = item_adding_cart.getrowcount_wishlist();
    if(wishlist_item_count==0)
    {

//wishlist_count_backround.setVisibility(View.GONE); } 别的 { // wishlist_count_backround.setVisibility(View.VISIBLE); }

    recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);



    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            initialization();
            hidePDialog();
        }
    }, 3000);





    boolean popup_once=pref.getBoolean("total_item_cart_insert_qery",true);
    if(popup_once)
    {
        editor.putBoolean("total_item_cart_insert_qery",false);
        editor.commit();
        item_adding_cart.insert_total_item_in_cart(0);
}
}

 public void jsoncall() {
    final HashMap<String, String> params = new HashMap<String, String>();
    params.put("sub_cate_id","24");
    params.put("city_id","3");
    CustomRequest_JsonObject servicelistrequest = new CustomRequest_JsonObject
            (/*Request.Method.POST,*/
                    url,
                    params,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {

                            stored_json_string = response.toString();
                            editor.putString("stored_json_prodcutlist",stored_json_string);
                            editor.commit();

                            try {

                                JSONArray data = response.getJSONArray("data");
                                for (int ie = 0; ie < data.length(); ie++) {
                                    JSONObject dataobje = data.getJSONObject(ie);
                                    ModelData_Product_list_act Model = new ModelData_Product_list_act();
                                    Model.setProduct_id(dataobje.getString("product_id"));
                                    Model.setTitle(dataobje.getString("title"));
                                    Model.setImage(dataobje.getString("product_image"));
                                    Model.setWieght(dataobje.getString("weight"));
                                    Model.setLatest_price(dataobje.getString("mrp"));
                                    Model.setDiscount(dataobje.getString("discount"));
                                    Model.setPre_price(dataobje.getString("retail_price"));
                                    Model.setUnit(dataobje.getString("unit"));

                                    datalist.add(Model);
                                    loadlistview();

                                }

                            } catch (JSONException e) {
                                e.printStackTrace();
                                Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
                            }




                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {

                            hidePDialog();
                            Toast.makeText(getApplicationContext(), "error : " + error.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }
            );

    AppController.getInstance().addToRequestQueue(servicelistrequest);
}
public void stored_json() {
    pDialog = new ProgressDialog(this);
    pDialog.setMessage("Loading...");
    pDialog.show();
    String mystored_json = pref.getString("stored_json_prodcutlist","");
    try {
        JSONObject myjsonojb = new JSONObject(mystored_json);
        JSONArray data = myjsonojb.getJSONArray("data");
        for (int ie = 0; ie < data.length(); ie++) {
            JSONObject dataobje = data.getJSONObject(ie);
            ModelData_Product_list_act Model = new ModelData_Product_list_act();
            Model.setProduct_id(dataobje.getString("product_id"));
            Model.setTitle(dataobje.getString("title"));
            Model.setImage(dataobje.getString("product_image"));
            Model.setWieght(dataobje.getString("weight"));
            Model.setLatest_price(dataobje.getString("mrp"));
            Model.setDiscount(dataobje.getString("discount"));
            Model.setPre_price(dataobje.getString("retail_price"));
            Model.setUnit(dataobje.getString("unit"));

            datalist.add(Model);
         //   loadlistview();
        }

    } catch (JSONException e) {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
    }

}

【问题讨论】:

    标签: android json listview android-activity activity-lifecycle


    【解决方案1】:

    而不是使用 startActivity 使用 startActivityForResult(yourIntent,REQ_CODE)

    Intent startActivity = new Intent(context,ClassName.class);
        startActivityForResult(startActivity,REQ_CODE);
    

    你从Activity B回来后,就可以从Activity发送你的列表,就可以进入Activity A了。

    然后onActivityResult回调方法获取你的intent数据

    【讨论】:

      【解决方案2】:

      我有另一个想法,使用后台任务创建并将其存储到本地数据库并在简历中显示本​​地数据库中的数据。你总是从本地数据库调用列表视图,所以当你回到 b 到简历时会调用所以它不会调用create所以它不会调用后台数据

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多