2015-02-07 50 views
0

我有2個光標,光標1和光標2​​.一個光標適配器已用於顯示光標1的結果。但是,我想爲每5個光標2插入光標2的項目項目。我怎麼能做到這一點?Android在光標適配器之間插入新行

目前我已經爲遊標1的列表視圖擴展了一個CursorAdapter。現在我想爲光標1的每個項目插入光標2項。

我看看MatrixCursor和MergeCursor,他們會合並並添加行,但我想插入之間。任何想法我們如何做到這一點?

+0

我想你的意思是你想要cursor1中的1項來自cursor1的5個項目。是對的嗎 ? – vovahost 2015-02-07 22:00:30

+0

對於光標1的每5個項目,是的,我想從光標2插入1個項目。 – 2015-02-08 03:00:05

回答

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 2015-02-08 03:29:48