2015-02-07 2 views
0

2 커서, 커서 1 및 커서 2가 있습니다. 커서 어댑터가 커서 1의 결과를 표시하는 데 사용되었습니다. 그러나 5 커서 2 개마다 항목 2를 삽입하고 싶습니다. 항목. 나는 그것을 어떻게 얻을 수 있습니까?안드로이드 커서 어댑터 사이에 새 행 삽입

현재 커서 1의 목록보기에 대해 CursorAdapter를 확장했습니다. 이제 5 개의 커서 1 항목마다 커서 2 항목을 커서 1에 삽입하려고합니다.

MatrixCursor와 MergeCursor를 살펴보면 병합하고 행을 추가하지만 사이에 삽입하고 싶습니다. 어떤 아이디어라도 어떻게 할 수 있습니까?

+0

커서 1에서 5 개 항목에 대해 cursor2에서 1 개 항목을 원한다고 생각합니다. 그게 맞습니까? – vovahost

+0

커서 1의 5 개 항목마다 예, 커서 2의 1 개 항목을 삽입하려고합니다. –

답변

0

달성하고자하는 설명에서 이해하기 쉽지 않습니다. BaseAdapter 클래스를 확장해야하므로 사용자의 요구에 쉽게 적응할 수 있습니다. 이 방법이 유용 할 것입니다.

public class CursorAdapterTwo extends BaseAdapter{ 

    private final Context context; 
    LayoutInflater layoutInflater; 
    String[] dataTypes; 
    Cursor cursor1; 
    Cursor cursor2; 


    public CursorAdapterTwo(Context context, Cursor cursor1, Cursor cursor2) { 
     this.context = context; 
     this.cursor1 = cursor1; 
     this.cursor2 = cursor2; 
     layoutInflater = LayoutInflater.from(context); 
    } 

    static class ViewHolder { 
     TextView textView; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder; 

     cursor1.moveToPosition(position); 

     if((position % 5) == 0) 
     { 
      cursor2.moveToPosition(position/5); 
     } 

     if (convertView == null) { 
      convertView = layoutInflater.inflate(layout.list_item, parent, false); 

      viewHolder = new ViewHolder(); 
      viewHolder.textView = (TextView) convertView.findViewById(id.text_view); 

      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     String columnType = dataTypes[position]; 

     viewHolder.textView.setText("New text"); 

     return convertView; 
    } 

    @Override 
    public int getCount() { 

     if (cursor1 != null) { 
      return cursor1.getCount() + cursor2.getCount(); 
     } else { 
      return 0; 
     } 

    } 

    @Override 
    public Object getItem(int position) { 
     if (cursor1 != null) { 
      cursor1.moveToPosition(position); 
      return cursor1; 
     } else { 
      return null; 
     } 
    } 

    @Override 
    public long getItemId(int position) { 

     return position; 
    } 

} 
+0

getCount가 커서 1과 2의 합계가 아닐까요? 또는 아마도 cursor1.count + (cursor1.count/5)? – bryan