2011-09-23 3 views
0

나는 소프트웨어를 실행하고하지만 난 목록보기로 스크롤 할 때, 그는 확인 표시하지만, 잠시 후 나는이 오류 메시지가 얻을 : 나는리스트 뷰에 커서를 표시하려고android.database.CursorIndexOutOfBoundsException

합니다.

내 어댑터 클래스 :

private class DBAdapter extends SimpleCursorAdapter { 
     private LayoutInflater mInflater; 
     private Cursor c; 
     private Context context; 

내 생성자

 public DBAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { 
      super(context, layout, c, from, to); 
      this.c = c; 
      this.context = context; 
      mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

의 getView 방법

 @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ViewHolder holder = null; 
      if (convertView == null) { 
       holder = new ViewHolder(); 
       convertView = mInflater.inflate(R.layout.match_item, null); 
       holder.tvHome = (TextView)convertView.findViewById(R.id.ll_home); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder)convertView.getTag(); 
      } 
       holder.tvHome.setText(c.getString(3)+"("+c.getString(6)+")"); 
       c.moveToNext(); 
       return convertView; 
     } 
    } 

간단한보기 홀더

public static class ViewHolder { 
     public TextView tvHome; 
    } 
} 

어댑터 초기화

Cursor cur = dh.getAll(); 
    startManagingCursor(cur); 

    String[] from = new String[] { "home" }; 
    int[] to = new int[] { R.id.ll_home}; 

    // Now create an array adapter and set it to display using our row 
    DBAdapter matches = new DBAdapter(this,R.layout.match_item, cur, from, to); 
    setListAdapter(matches); 

누군가가이 문제를 해결하는 데 도움이 수 있습니까? 나는 모든 곳에서 검색 한하지만 난 모든 솔루션을 사용하면 이후

안부, 니 코스

+0

이 어댑터를 인스턴스화하는 코드를 보여줄 수 있습니까? – davogotland

+0

@ davogotland 나는 나의 초기 지위를 편집했다. 어댑터 인스턴스화는 – Nicos

+0

에 포함되어 있습니다. getView에서 c.moveToNext()가 생기 있다고 생각합니다. 그러나 나는 확실하지 않다. 당신이 그것을 제거하면 어떻게 될까? – davogotland

답변

0
holder.tvHome.setText(c.getString(3)+"("+c.getString(6)+")"); 
if(position<=c.getCount())   
    c.moveToNext(); 
return convertView;  
+0

그러면 커서가 매회 2 단계 씩 움직이지 않을까요? – davogotland

+0

또한 if 문은 세미콜론이 뒤 따르기 때문에 아무 것도하지 않습니다 – davogotland

+0

@davogotland 내 편집 된 답변보기 –

0

을 찾을 수 없습니다 인덱스를 0으로 설정 한 요소가 하나뿐입니다. c.getString (0)을 하나 시도하십시오. 나는 당신이 당신의 자신의 커서 어댑터, 하지getView을 구현할 때 newViewbindView을 무시하는 거 야

+0

하나의 원소 시연되었다. 그것의 실제로 8 개의 요소 – Nicos

+0

이것을 읽으려고 노력하십시오.데이터베이스 및 커서 어댑터를 사용하는 쉬운 예입니다 .http : //android-er.blogspot.com/2011/06/simple-example-using-androids-sqlite_02.html – kehnar