2015-02-07 2 views
0

У меня есть 2 курсора, курсор 1 и курсор 2. Адаптер курсора использовался для отображения результата курсора 1. Однако я хочу вставить элемент курсора 2 для каждых 5 курсоров 2 Предметы. Как я могу это достичь?Android Вставить новую строку между адаптером курсора

В настоящее время у меня есть расширение CursorAdapter для просмотра списка для курсора 1. Теперь я хочу вставить элементы курсора 2 в курсор 1 для каждого элемента 5 курсора 1.

Я посмотрел MatrixCursor и MergeCursor, они объединили и добавили строки, но я хочу вставить их между ними. Любые идеи, как мы можем это сделать?

+0

Я думаю, вы имеете в виду, что хотите 1 элемент из cursor2 для 5 элементов из cursor1. Это правильно ? – vovahost

+0

Да для каждых 5 элементов из курсора 1, я хочу вставить 1 элемент из курсора 2. –

ответ

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

Смежные вопросы