當點擊我有一個ViewTreeObserver,我想點擊按鈕,並重新加載此的ListView 這是我viewTreeObserver代碼:安卓viewtreeObserver負載按鈕
menuLinkListView=(ListView) findViewById(R.id.menu_listview);
observer= menuLinkListView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
boolean measured=false;
@Override
public void onGlobalLayout() {
if(!measured){
listHeight=menuLinkListView.getHeight();
int spacing =0;
int itemsPerRow = 2;
adapter=new HomeMenuLinksListArrayAdapter(MainActivity.this,MyApplication.articles, listHeight);
wrapperAdapter = new MultiItemRowListAdapter(MainActivity.this, adapter, itemsPerRow, spacing);
menuLinkListView. setAdapter(wrapperAdapter);
}
// observer.removeGlobalOnLayoutListener(this);
measured=true;
}
});
和按鈕,當我點擊我要獲取新的文章列表並重新加載這個ListView再次與新的arrayList。我怎樣才能做到這一點?
注意,文章
MyApplication.articles =在ArrayList中點擊我把這個asynk任務:
getArticles getarticles = new getArticles();
getarticles.execute("2",tag);
AsynkTask的代碼:
public class getArticles extends AsyncTask<String, Void, ArrayList<Article>>
{
private ProgressDialog pd;
ArrayList<Article> array = new ArrayList<Article>();
@Override
protected void onPreExecute()
{
pd=ProgressDialog.show(MainActivity.this, "", MainActivity.this.getResources().getString(R.string.loading), false);
}
@Override
protected ArrayList<Article> doInBackground(String... params) {
if(Actions.isNetworkAvailable(MainActivity.this))
{
Connection.disableSSLCertificateChecking();
String url=getResources().getString(R.string.serviceLink)+getResources().getString(R.string.getArticleIssueCat) + "issueId=" + params[0] + "&categoryId=" + params[1];
Connection conn=new Connection(url);
ArticleXmlPullParser parser = new ArticleXmlPullParser();
array=parser.parse(conn.getInputStream());
}
return array;
}
@Override
protected void onPostExecute(final ArrayList<Article> p)
{
MyApplication.articles = p;
adapter.notidyDataSetChanged();//here i cann notify for adapter of listview but nothing changed
try{
pd.dismiss();
}catch(Exception e){
}
}
}
這是沒有辦法的辦法做到這一點。爲什麼你需要每次創建新的適配器onGlobalLayout()被調用?爲什麼不在onClick()上添加notifiyDataChanged()? – EE66
我剛剛在onClick上添加了notifyDataChanged,但仍顯示舊的arrayList – Malo
代碼的問題在這裏。附加更多代碼。 onClick()還有什麼?你是否下載更多的數據?添加/刪除?爲什麼你需要再次加載列表?附加更多的代碼和幫助你。 – EE66