2013-05-21 3 views
0

Я не могу обновить свой список. Я знаю, что для этого есть много справки. Но я не могу обновить свой список.listview refresh aynctask in android

Lemme редактировать мой код немного показывая AsyncTask

Есть два вида деятельности. Первое действие имеет вид списка, чтобы увидеть, что является общим, а второе - текстовым полем редактирования (для ввода inorder для совместного использования) и кнопкой. При нажатии кнопки он возвращает мне строку, которая является ответом json, и мне нужно добавить это в предыдущее действие.

Теперь проблема в том, что когда я обновляю первую страницу, полностью поражая сервер, она получает ответ, но это не то, что я хочу. Он не должен возвращаться на сервер. Он должен просто добавить в адаптер списка.

Я прокомментировал код в PostExecute(). Я пробовал все время, но это не отражается.

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(); 

      } 
     });*/ 

    } 

} 
+0

Можете ли вы показать код адаптера? – Kanth

+0

@Appu: В адаптере много вещей. Мне было бы невозможно показать код адаптера –

+0

Ну, это нормально. Я попросил, чтобы убедиться, что вы изменили данные в адаптере перед вызовом notifyDataSetChanged(). – Kanth

ответ

0
  1. Вы должны вызвать setAdapter() только один раз во всем коде.
  2. Затем добавьте метод в свой адаптер, который добавит больше данных, если вы хотите добавить дополнительные данные или установить элемент адаптера.

    public void addMoreData(List<String> newItems) { 
    this.list.addAll(newItems); 
    } 
    public void setList(List<String> newList) { 
    this.list = newList; 
    } 
    
  3. Вызов notifyDataSetChanged() после того, как вы установили новый список или добавить больше данных.

0

в соответствии с того, что вы хотите достичь нет необходимости использовать темы имеют вид на следующую ссылку он показывает, как сделать это в одной и той же деятельности

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

В этом они сделали это в одном упражнении. если вы хотите сделать это с помощью двух мероприятий, дайте мне знать, я расскажу вам, как это сделать.