如何在对话框中将asyncTask中的数据显示为列表?

时间:2016-06-13 06:37:46

标签: java android list android-asynctask dialog

我有一个asynTask来从服务器获取所有事件。来自asyncTask的数据我希望在对话框中显示为列表。我怎么能这样做?

getEventsAsyncTask

public class GetEventsAsyncTask extends AsyncTask<Void, Void, JSONObject> {
    String api;
    private Context context;

    public GetEventsAsyncTask(Context context) {
        this.context = context;
    }


    @Override
    protected JSONObject doInBackground(Void... params) {
        try {
            api = context.getResources().getString(R.string.server_url) + "api/event/getEvents.php";
            ServerRequest request = new ServerRequest(api);
            return request.sendGetRequest();
        } catch(Exception e) {
            return Excpetion2JSON.getJSON(e);
        }
        }  //end of doInBackground

        @Override
        protected void onPostExecute(JSONObject response) {
            super.onPostExecute(response);
            Log.e("ServerResponse", response.toString());
            try {
                int result = response.getInt("result");
                String message = response.getString("message");
                if (result == 1 ) {
                    Toast.makeText(context, message, Toast.LENGTH_LONG).show();
                    //code after getting profile details goes here
                } else {
                    Toast.makeText(context, message, Toast.LENGTH_LONG).show();
                    //code after failed getting profile details goes here
                }
            } catch(JSONException je) {
                je.printStackTrace();
                Toast.makeText(context, je.getMessage(), Toast.LENGTH_LONG).show();
            }
        } //end of onPostExecute
}

对话框:

   @Override
    protected Dialog onCreateDialog(int id) {

        Dialog dialog = null;
        String[] listContent = {"Wedding",
        "Anniversary",
        "Naming Ceremony/Baptism",
        "Thread Ceremony",
        "Engagement",
        "Birthday",
        "Friends and Family Meet",
        "Funeral",
        "Movie",
        "Play"};

        switch(id) {
            case CUSTOM_DIALOG_ID:
                dialog = new Dialog(PlanEventActivity.this);
           //     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.setContentView(R.layout.choose_event_dialog);
                dialog.setCancelable(true);
                dialog.setCanceledOnTouchOutside(true);
                dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){

                    @Override
                    public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
                   //     Toast.makeText(PlanEventActivity.this,
                        //        "OnCancelListener",
                          //      Toast.LENGTH_LONG).show();
                    }});

                dialog.setOnDismissListener(new DialogInterface.OnDismissListener(){

                    @Override
                    public void onDismiss(DialogInterface dialog) {
// TODO Auto-generated method stub
                       // Toast.makeText(PlanEventActivity.this,
                              //  "OnDismissListener",
                              //  Toast.LENGTH_LONG).show();
                    }});

//Prepare ListView in dialog
                dialog_ListView = (ListView)dialog.findViewById(R.id.dialoglist);
                ArrayAdapter<String> adapter
                        = new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, listContent);
                dialog_ListView.setAdapter(adapter);
                dialog_ListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
// TODO Auto-generated method stub
                       // Toast.makeText(PlanEventActivity.this,
                           //     parent.getItemAtPosition(position).toString() + " clicked",
                            //    Toast.LENGTH_LONG).show();

                        chooseEventText.setText(parent.getItemAtPosition(position).toString());

                        dismissDialog(CUSTOM_DIALOG_ID);
                    }});

                break;
        }

        return dialog;
    }

在此对话框中,我显示为字符串列表。如何显示asyncTask中的数据列表?谢谢..

0 个答案:

没有答案