1

私のプログラムでは、json URLから値を取得し、それらをlistViewに表示しています。リストからいくつかのアイテムを削除したいので、アイテムをクリックすると、AsyncTaskのdoInBackground()で削除APIが呼び出されます。AsyncTaskを完了した後、変更を確認できるようにリストを再ロードします。

リストをリロードして変更を確認するにはどうすればよいですか。

私のAsyncTaskは別のクラスです。

これは私のAsyncTaskコードです:

protected String doInBackground(String... DATA) {
    // TODO Auto-generated method stub
    rqst_type = DATA[0];
    if(rqst_type.equals("del_top5"))
    {
        String url = DATA[1];
        JsonParser jParser = new JsonParser();
        JSONObject json = jParser.getJSONfromUrl(url+memberId);
        Log.v(TAG_LOG, "del url: "+url+memberId);
        try
        {
            message = json.getString(TAG_DELSCS);
            Log.v(TAG_LOG, "msg "+TAG_DELSCS);
        }
        catch(JSONException e)
        {
            Log.v(TAG_LOG, String.valueOf(e));
        }
    }
    return null;
}


protected void onPostExecute(String result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    if(rqst_type.equals("del_top5"))
    {
        if(message.equals("true"))
        {
            AlertDialog alertDialog = new AlertDialog.Builder(context).create();
            alertDialog.setTitle("Course Deleted");
            alertDialog.setMessage("Course Sucessfully Deleted");
            alertDialog.setIcon(R.drawable.tick);
            alertDialog.setButton("OK", new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int which)
                {

                }
            });
            alertDialog.show();
        }
        else if(message.equals("false"))
        {
            AlertDialog alertDialog = new AlertDialog.Builder(context).create();
            alertDialog.setTitle("Error");
            alertDialog.setMessage("Course Not Deleted");
            alertDialog.setIcon(R.drawable.alert);
            alertDialog.setButton("OK", new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int which)
                {

                }
            });
            alertDialog.show();
        }
        else
        {
            AlertDialog alertDialog = new AlertDialog.Builder(context).create();
            alertDialog.setTitle("Error");
            alertDialog.setMessage("Unknown Erroe Occured");
            alertDialog.setIcon(R.drawable.alert);
            alertDialog.setButton("OK", new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int which)
                {

                }
            });
            alertDialog.show();
        }
    }
    progress.dismiss();
}

私のアクティビティの名前はMyTop5.class、AlertDialogの[OK]ボタンをクリックしたときにリロードしたいというものです。

これは私のListAdapterのコーディングです:

ListAdapter adapter = new SimpleAdapter(this, LoadingScreen.top5List, R.layout.top5_list,
            new String[] { TAG_GLFCRSNAME, TAG_GLFCRSID, TAG_CRTDATE, TAG_FCLTY, TAG_HOLES },
            new int[] { R.id.top_golfname, R.id.top_courseid, R.id.top_createdate, R.id.top_fclty, R.id.top_holes });
setListAdapter(adapter);

前もって感謝します..

4

2 に答える 2

0

私は通常、ActivityをパラメーターとしてAsyncTaskに渡し、それを使用して、作業が完了したときにアクティビティーのパブリックメソッドを呼び出します。たとえば、コンストラクタを介して渡すことができます。次に、リストで必要な変更を実行します。次に、アダプターをListViewとして使用している場合は、アダプターでnotifyDataSetChanged()を呼び出すことを忘れないでください。

于 2012-08-30T19:09:10.680 に答える
0

これを試すことができます

adapter.notifyDataSetChanged();

アダプターでオブザーバー呼び出しを行います。

于 2012-08-30T19:11:24.893 に答える