0
현재 목록보기를 스크롤하고 새로 고침을 빠르게하는 데 크래시 문제가 있습니다. 이클립스는이 코드에 나에게Android : ArrayAdapter가 범위를 벗어남. 새로 고침 후 getView에서 충돌이 발생합니다.
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);
}
}
이 줄에서 충돌이 발생합니까 ?? 링크 링크 = mLinkManager.getLinks(). get (position); –
위치가 1이면 0이어야합니다. –
getItemId 및 getItem (position) 메서드를 구현 했습니까? – GrIsHu