当点击我有一个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