2012-01-16 75 views
0

我有一個包含webservice的值的列表視圖。每個頁面僅包含10個列表項和第2頁中的下一個10等。每個listitem都是可點擊的,它包含一個主要用於投票的按鈕。我點擊列表項1中的按鈕,將值添加到webservice。在Android中刷新列表視圖

按鈕點擊代碼被放置在一個自定義的基礎適配器類中。所以我可以很容易地添加vote.But問題是,當我提交投票時,我想刷新我的listview也。如果iam頁面中假設否5,刷新該列表視圖頁面。

如何在將值提交給webservice後立即刷新此列表視圖?對於main.java

private class ProgressThreadNextPageLoading extends 
AsyncTask<String, Void, String> { 

    // private String Content; 




    @Override 
    protected void onPreExecute() { 

     progressDialog = new ProgressDialog(KidsCrackMeUp.this); 

     progressDialog.setMessage("Loading..Please Wait.."); 
     progressDialog.setIcon(R.drawable.icon); 


     progressDialog.show(); 



    } 

    @Override 
    protected String doInBackground(String... urls) { 

     String response = ""; 

     // call ur webservice here 

     try { 

      // pagenum = 1; 
      posts= web 
      .getAllposts(pagenum); 
      response = "Yes"; 

     } catch (Exception e) { 

      e.printStackTrace(); 

      response = "Failure"; 

     } 

     return response; 

    } 

    @Override 
    protected void onPostExecute(String result) { 

     // below line code is to dismiss the progress bar 


     progressDialog.dismiss(); 
     if (posts != null) { 
       adapter = new DynamicListAdapter(
        main.this, posts 
      lstPosts.setAdapter(adapter); 
      adapter.notifyDataSetChanged(); 

      //btnState.setPressed(true); 
     } 

示例代碼--------------------------------- -custom適配器類

viewHolder.btnVoting.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
final Dialog d = new Dialog(activity); 
       d.requestWindowFeature(Window.FEATURE_NO_TITLE); 
       d.setContentView(R.layout.voteselectornew); 
       Button btnCategoryCancel = (Button) d 
       .findViewById(R.id.btnCategoryCancel); 

     Button twcVote = (Button) d 
       .findViewById(R.id.btnTwcVote); 

     twcVote.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       String confirm = web 
       .addTwcVote(UserSessionKey, Userlist.get(position).contentid); 


       if (confirm.contains("Successfully")) { 

d.dismiss(); 

} 
+0

可能重複的[Android列表視圖刷新](http://stackoverflow.com/questions/4088862/android-list-view-refresh) – 2012-01-16 09:29:47

回答

3

打電話給你的ListView適配器的方法來更新的變化:

adapter.notifyDataSetChanged(); 
+0

我應該檢查任何條件嗎? – 2012-01-16 09:26:57

+0

一次投票操作完成後,只需更新適配器類使用的數據,然後調用適配器的notifyDataSetChanged更新列表視圖自動 – waqaslam 2012-01-16 09:30:21

+0

對不起,IM問的是我應該在哪裏把這個代碼?列表視圖在活動開始時加載。因此我不知道該通知的放置位置。 – 2012-01-16 09:33:11

3

你必須通知該數據已經改變了你的ListView適配器。

listViewAdapater.notifyDataSetChanged(); 

您可以通過構造函數使用更新後的數組來重新獲取適配器。