How to call notifyDataSetChanged() on ArrayList view?

守給你的承諾、 提交于 2019-12-13 05:56:31

问题


This is the ArrayList page that opens as a result page after update and save. I guess I would need to somehow refresh so that it reflects the changes on the UI. I've tried to call notifyDataSetChanged() but no luck with my level of experience. Could someone kindly show how to implement it please?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_requests);

    requestsList = new ArrayList<HashMap<String, String>>();

    new LoadAllRequests().execute();

    ListView list = getListView();

    list.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            String request_id = ((TextView) view.findViewById(R.id.request_id)).getText().toString();


            Intent in = new Intent(getApplicationContext(),
                    ViewRequestActivity.class);

            in.putExtra(TAG_ID, request_id);


            startActivityForResult(in, 100);
        }
    });

}

// Response from ViewRequestActivity when delete a request reload this page again

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // if result code 100
    if (resultCode == 100) {            
        Intent intent = getIntent();
        finish();
        startActivity(intent);
    }

}


class LoadAllRequests extends AsyncTask<String, String, String> {



    protected String doInBackground(String... args) {

        List<NameValuePair> params = new ArrayList<NameValuePair>();

        JSONObject json = jParser.makeHttpRequest(url_all_requests, "GET", params);


        Log.d("All Requests: ", json.toString());

        try {

            int success = json.getInt(TAG_SUCCESS);

            if (success == 1) {


                requests = json.getJSONArray(TAG_REQUESTS);


                for (int i = 0; i < requests.length(); i++) {
                    JSONObject c = requests.getJSONObject(i);


                    String request_id = c.getString(TAG_ID);
                    String request_title = c.getString(TAG_TITLE);


                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    map.put(TAG_ID, request_id);
                    map.put(TAG_TITLE, request_title);


                    requestsList.add(map);
                }
            } else {


                Intent i = new Intent(getApplicationContext(),
                        NewRequestActivity.class);

                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

回答1:


You need to create an adapter for your ListView. The adapter is what feeds data to it for displaying. I would recommend you reading through this tutorial:

http://www.vogella.com/articles/AndroidListView/article.html

So once you have created your adapter and then called lv.setAdapter(<adapter>), you can then call <adapter>.notifyDataSetChanged(). This will tell the adapter that it needs to refresh itself.




回答2:


You can use notifyDataSetChanged() method for your adapter.Wherever you want to update your listview you can use in following manner.

 adapter.notifyDataSetChanged(); 


来源:https://stackoverflow.com/questions/11830023/how-to-call-notifydatasetchanged-on-arraylist-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!