【发布时间】:2014-10-07 22:55:50
【问题描述】:
背景:
我正在研究一个图像网格视图,应用程序将首先加载到所选类别(整数)中,以生成相应的图像 url 数组列表,然后将图像拟合到网格视图。
此外,操作栏中有一个微调器,列出了图像类别,我想以一种方式实现,即 gridview 将根据微调器中选择的类别进行刷新。
代码:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
default_category = Constants.gridview_category_chosen; // integer
generate_array(default_category); // to generate the array of image urls to load to adapter
....
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fr_image_grid, container, false);
listView = (GridView) rootView.findViewById(R.id.grid);
_ImageAdapter = new ImageAdapter();
((GridView) listView).setAdapter(_ImageAdapter);
....
}
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId)
{
Constants.custom_toast(getActivity(), ""+itemPosition+" "+itemId, "");
Constants.gridview_category_chosen = itemPosition;
default_category = Constants.gridview_category_chosen;
generate_array(default_category);
_ImageAdapter.notifyDataSetChanged();
listView.setAdapter(new ImageAdapter());
return false;
}
Logcat:
10-07 22:22:48.711: W/dalvikvm(13464): threadid=1: thread exiting with uncaught exception (group=0x41d17700)
10-07 22:22:48.721: E/AndroidRuntime(13464): FATAL EXCEPTION: main
10-07 22:22:48.721: E/AndroidRuntime(13464): java.lang.ArrayIndexOutOfBoundsException: length=44; index=44
10-07 22:22:48.721: E/AndroidRuntime(13464): at com.abc.app.fragment.ImageGridFragment.generate_array(ImageGridFragment.java:91)
10-07 22:22:48.721: E/AndroidRuntime(13464): at com.abc.app.fragment.ImageGridFragment.onNavigationItemSelected(ImageGridFragment.java:165)
10-07 22:22:48.721: E/AndroidRuntime(13464): at com.android.internal.widget.ActionBarView$1.onItemSelected(ActionBarView.java:235)
10-07 22:22:48.721: E/AndroidRuntime(13464): at android.widget.AdapterView.fireOnSelected(AdapterView.java:899)
10-07 22:22:48.721: E/AndroidRuntime(13464): at android.widget.AdapterView.access$200(AdapterView.java:50)
10-07 22:22:48.721: E/AndroidRuntime(13464): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:863)
10-07 22:22:48.721: E/AndroidRuntime(13464): at android.os.Handler.handleCallback(Handler.java:730)
10-07 22:22:48.721: E/AndroidRuntime(13464): at android.os.Handler.dispatchMessage(Handler.java:92)
10-07 22:22:48.721: E/AndroidRuntime(13464): at android.os.Looper.loop(Looper.java:137)
10-07 22:22:48.721: E/AndroidRuntime(13464): at android.app.ActivityThread.main(ActivityThread.java:5493)
10-07 22:22:48.721: E/AndroidRuntime(13464): at java.lang.reflect.Method.invokeNative(Native Method)
10-07 22:22:48.721: E/AndroidRuntime(13464): at java.lang.reflect.Method.invoke(Method.java:525)
10-07 22:22:48.721: E/AndroidRuntime(13464): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
10-07 22:22:48.721: E/AndroidRuntime(13464): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
10-07 22:22:48.721: E/AndroidRuntime(13464): at dalvik.system.NativeStart.main(Native Method)
问题:
在onNavigationItemSelected 循环中之前没有任何内容。在上面代码中添加内容后,出现logcat中的错误。
目前图像 url 中有 44 张图像(即,每个 logcat 似乎会再次生成数组列表使其成为 ArrayIndexOutOfBoundsException?)
我研究了Refresh GridView contents with custom BaseAdapter、clear a custom adapter 或类似的,但仍然有同样的问题。 怎么可能修改?提前致谢!
【问题讨论】:
标签: android gridview spinner invalidation