我目前在向下滚动列表视图并快速按下刷新时遇到崩溃问题。Eclipse给了我
11-25 23:58:51.511: E/AndroidRuntime(29736): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
在此代码上:
mAdapter = new ArrayAdapter<Link>(getActivity(), R.layout.link_item,
mLinkManager.getLinks()) {
@Override
public int getCount() {
return mLinkManager.getLinks().size();
}
public long getItemId(int position) {
return mLinkManager.getLinks().get(position).getId().hashCode();
}
public Link getItem(int position) {
return mLinkManager.getLinks().get(position);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(
R.layout.link_item, null);
}
Link link = mLinkManager.getLinks().get(position);
// Set textview stuff from links here
return convertView;
};
};
setListAdapter(mAdapter);
}
崩溃发生在最后一行。一旦按下刷新,有没有办法停止getView()方法?任何帮助将不胜感激。
private class RefreshLinksTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
Log.d(TAG, "Refreshing...");
if (mIsRefreshing || mIsDownloading)
cancel(true);
mIsRefreshing = true;
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
mLinkManager.refreshLinks();
return null;
}
@Override
protected void onPostExecute(Void result) {
if (mAdapter != null) {
mAdapter.notifyDataSetChanged();
}
else {
createAdapter();
}
mIsRefreshing = false;
super.onPostExecute(result);
}
}
请注意,notifyDataSetChanged()
在更改后备清单中的项目后,您应该立即致电。我的建议是返回从链接的列表doInBackground()
和设置onPostExecute()
和调用notifyDataSetChanged()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句