0

リストビューを更新できません。これには多くの助けがあることを私は知っています。しかし、リストビューを更新できません。

AsyncTask を示すコードを少し編集してください

2 つのアクティビティがあります。最初のアクティビティには、何が共有されているかを確認するためのリスト ビューがあり、2 番目のアクティビティには編集テキスト ボックス (共有するために入力するため) とボタンがあります。ボタンをクリックすると、json 応答である文字列が返されます。これを前のアクティビティに追加する必要があります。

問題は、サーバーに完全にヒットする最初のページを更新すると、応答が返されることですが、これは私が望むものではありません。サーバーに戻るべきではありません。リストビューアダプターに追加するだけです。

PostExecute() のコードにコメントを付けました。everyway を試してみましたが、反映されません。

public class ShareAsyncTask extends AsyncTask<String, Void, ArrayList<EventsStreamBean>> {

    public ProgressDialog pd = new ProgressDialog(EventStreamActivity.this);

    String success_share_val;

    @Override
    protected ArrayList<EventsStreamBean> doInBackground(
            String... result) {
        // TODO Auto-generated method stub


        JSONObject jsonobj = new JSONObject(result[0].toString());

        success_share_val = jsonobj.getString(Constants.SUCCESS);


        //checks the success value
        if(success_share_val.equalsIgnoreCase("1")) {            

         JSONArray events_stream_share_array = jsonobj.getJSONArray("streamArray");

         if(events_stream_share_array.length() > 0) {


                 for(int i=0; i<events_stream_share_array.length(); i++) {

                     EventsStreamBean events_stream_bean = new EventsStreamBean();

                     JSONObject events_stream_object = events_stream_share_array.getJSONObject(i);

                     events_stream_bean.setStreamId(events_stream_object.getString(Constants.STREAM_ID));
                     events_stream_bean.setStreamType(events_stream_object.getString(Constants.STREAM_TYPE));

                     events_stream_bean.setUserId(events_stream_object.getString(Constants.USER_ID));
                     events_stream_bean.setUserName(events_stream_object.getString(Constants.USER_NAME));
                     events_stream_bean.setUserType(events_stream_object.getString(Constants.USER_TYPE));
                     events_stream_bean.setUserAvatar(events_stream_object.getString(Constants.USER_AVATAR));

                     arraylist_events_stream.add(events_stream_bean);

                 }
         }else {
             Log.i("Test", "No Events Streams Available");
         }

        }

        }catch(Exception e) {}



        return arraylist_events_stream;
    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();

        this.pd.setMessage("Loading....");
        pd.setCanceledOnTouchOutside(false); 
        pd.setCancelable(false);
        this.pd.show();
    }

    @Override
    protected void onPostExecute(final ArrayList<EventsStreamBean> result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        if(this.pd.isShowing()) {
            this.pd.dismiss();
        }


        Toast.makeText(EventStreamActivity.this, "Post shared successfully", Toast.LENGTH_SHORT).show();
        new EventsStreamAsyncTask().execute(temp_val);



        /*runOnUiThread(new Runnable() {
            public void run() {

                //EventStream_Customadapter adapter = (EventStream_Customadapter) list_view.getAdapter();
                //adapter.clearData();

                adapter.updateData(result);
                //adapter = new EventStream_Customadapter(EventStreamActivity.this, arraylist_events_stream);
                //list_view.setAdapter(adapter);
                //adapter.notifyDataSetChanged();

            }
        });*/

    }

}
4

2 に答える 2

0

達成したいことに従って、スレッドを使用する必要はありません。次のリンクを見てください。同じアクティビティでそれを行う方法を示しています

http://wptrafficanalyzer.in/blog/dynamically-add-items-to-listview-in-android/

これで、彼らは単一の活動でそれを行いました。2つのアクティビティでやりたい場合は、私に知らせてください。方法を教えます。

于 2013-05-21T07:09:14.787 に答える
0
  1. コード全体で setAdapter() を 1 回だけ呼び出す必要があります。
  2. 次に、データを追加したり、アダプター項目を設定したりするときに、データを追加するメソッドをアダプターに追加します。

    public void addMoreData(List<String> newItems) {
    this.list.addAll(newItems);
    }
    public void setList(List<String> newList) {
    this.list = newList;
    }
    
  3. 新しいリストを設定するか、データを追加した後は、notifyDataSetChanged() を呼び出します。

于 2013-05-21T05:01:10.317 に答える