gpt4 book ai didi

android - 如何在android中创建动态控件后刷新 Activity

转载 作者:太空狗 更新时间:2023-10-29 15:13:23 25 4
gpt4 key购买 nike

在我的 Activity Oncreate() 函数中,我正在调用一个 AsyncTask。在那个PostExecute() 中,我创建了一些动态图库控件 并调用了ImageAdapterL.notifyDataSetChanged();。但我得到空指针异常。

我需要在不调用 Oncreate() 的情况下刷新 Activity [因为在 Oncreate 中我只调用异步任务]。

        @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);

new testAynscTask().execute();
}
private class testAynscTask extends AsyncTask<Void, Void, Void>{

@Override
protected Void doInBackground(Void... params) {
processTogetImages();
// TODO Auto-generated method stub
return null;
}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
CreateDynamicGallery();
aImageAdapterL.notifyDataSetChanged();
}
}
public void CreateDynamicGallery(){
CategoryGalleryLayout = (LinearLayout) findViewById(R.id.linearLayout1);
Gallery g = new Gallery(getApplicationContext());
GalleryLayout.addView(g,new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
g.setSpacing(15);


aImageAdapterL = new ImageAdapter(getApplicationContext());
g.setAdapter(aImageAdapterL);
g[positionP].setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View v, int position, long id) {
Toast.makeText(getBaseContext(), "" + position, Toast.LENGTH_SHORT).show();
}
});



}

}

提前致谢

最佳答案

在我看来,您并没有真正刷新 Activity ,只是刷新了适配器中的图像。我建议使用空适配器从 onCreate 调用 createDynamicGallery(编写良好的适配器 View 应该通过将其视为空适配器来处理空适配器),然后加载图像并使用图像填充真正的适配器(或新适配器)。将图库 View 的适配器设置为真实适配器应该会导致图库刷新,一切都会好起来的。

作为额外的观察,您可能想看看使用 asynctaskloader 和 loadermanager 来帮助您正确处理轮换。使用您当前的代码,如果异步任务需要很长时间才能执行,则可能会出现错误(可能是“Activity 被破坏”错误)或两个异步任务试图在屏幕旋转后加载图像的竞争条件。

关于android - 如何在android中创建动态控件后刷新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14888872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com