2014-07-02 87 views
0

我希望每一个新项目时更新我的​​列表视图进度对话框中添加到我的ArrayList中显示出这是我的代码如何更新列表视图项目的每个项目添加

public class Load extends AsyncTask<Void, Void, Void> { 

    ProgressDialog progress; 

    @Override 
    protected void onPreExecute() { 
     progress = new ProgressDialog(SearchList.this); 
     progress.setMessage("loading...."); 
     progress.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // do tracks loading process here, don't update UI directly here 
     // because there is different mechanism for it 

     //FlowableBookViewer.webview.loadUrl("javascript:(function(){var txt = window.getSelection();window.name= txt;window.cpjs.sendToAndroid(window.name);})()"); 

     for (int i = 0; i < Globals.currenHtmlList.size(); i++) { 
      try { 
       String pageText = FunctionsClass 
         .readTextFromHtml(Globals.currenHtmlList.get(i)); 
       if (pageText.toLowerCase().contains(
         Globals.SelectedText.toLowerCase())) { 
        String pagename = new File(
          Globals.currenHtmlList.get(i)).getName(); 
        SearchItem sitem = new SearchItem(); 
        sitem.setTargetList(Globals.currenHtmlList.get(i)); 
        sitem.setPageNumber(i); 
        if (pagename.endsWith("html")) { 
         pagename = pagename.substring(0, 
           pagename.length() - 5); 
        } else if (pagename.endsWith("htm")) { 
         pagename = pagename.substring(0, 
           pagename.length() - 4); 
        } else if (pagename.endsWith("xhtml")) { 
         pagename = pagename.substring(0, 
           pagename.length() - 6); 
        } 

        sitem.setTitleList("Page " + pagename); 
        founded.add(sitem); 





       } 

      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     // write display tracks logic here 
     progress.dismiss(); // dismiss dialog 
     m_adapter = new OrderAdapter(SearchList.this, R.layout.itemview, 
       founded); 
     lv.setAdapter(m_adapter); 
     lv.setTextFilterEnabled(true); 
    } 
} 

在此代码列表视图项后完全出现for循环将sitem对象的所有项添加到创建的列表我想更新listview添加到创建的每个项目。 非常感谢

+0

首先在添加每个项目后刷新列表并不好。您可以在'doInBackground'中运行使用UI线程并调用'm_adapter.notifyDatasetChanged();',但是您需要在此之前创建适配器并创建类的实例类 –

+0

添加新项目后,只需通知您的列表适配器。 –

回答

0

1)创建适配器调用AsyncTask

移动这对你的活动/片段onCreate方法之前:

m_adapter = new OrderAdapter(SearchList.this, R.layout.itemview, 
        founded); 
lv.setAdapter(m_adapter); 
    lv.setTextFilterEnabled(true); 

2)你以后在你的ArrayList调用添加项onProgressUpdateAsyncTask

在你doInBackground添加方法:

founded.add(sitem); 
publishProgress(); 

3)在onProgressUpdate方法调用notifyDatasetChanged方法从适配器

@Override 
protected void onProgressUpdate(Void... v) { 
    super.onProgressUpdate(v); 
    m_adapter.notifyDataSetChanged(); 
} 

你可以阅读更多关于notifyDataSetChangedhere

+0

你可以请注意我简单的代码到你的想法,因为我尝试过但没有任何改变。谢谢你的帮助 – Ayman

+0

@ user3764397我已经更新了我的答案 – LordRaydenMK

+0

感谢您的帮助,但是为什么在完成搜索后它没有隐藏进度对话框,并且它运行了一个异常,尽管我编辑了onPostExecute这个progress.dismiss(); – Ayman

相关问题