2016-03-29 8 views

答えて

5

ライブラリSectionedRecyclerViewAdapterを使用して達成できます。それは "セクション"の概念を持ち、各セクションは独自のヘッダーを持つことができます。

あなたの電話を「日付」でグループ化する必要があるようです。だから、このようなあなたのセクションのクラスを作成することができます。

// Create an instance of SectionedRecyclerViewAdapter 
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter(); 

MySection mySection1 = new MySection("27 Mar, 2016", callList1); 
MySection mySection2 = new MySection("28 Mar, 2016", callList2); 

// Add your Sections 
sectionAdapter.addSection(mySection1); 
sectionAdapter.addSection(mySection2); 

// Set up your RecyclerView with the SectionedRecyclerViewAdapter 
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); 
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
recyclerView.setAdapter(sectionAdapter); 
+0

感謝メイト:

class MySection extends StatelessSection { String date; List<Call> callList; public MySection(String date, List<Call> callList) { // call constructor with layout resources for this Section header, footer and items super(R.layout.section_header, R.layout.section_footer, R.layout.section_item); this.date = date; this.callList = callList; } @Override public int getContentItemsTotal() { return callList.size(); // number of items of this section } @Override public RecyclerView.ViewHolder getItemViewHolder(View view) { // return a custom instance of ViewHolder for the items of this section return new MyItemViewHolder(view); } @Override public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) { MyItemViewHolder itemHolder = (MyItemViewHolder) holder; // bind your view here itemHolder.tvItem.setText(callList.get(position).getContactName()); } @Override public RecyclerView.ViewHolder getHeaderViewHolder(View view) { return new SimpleHeaderViewHolder(view); } @Override public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) { MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder; // bind your header view here headerHolder.tvItem.setText(date); } } 

は、次に、あなたのセクションでRecyclerViewを設定します。このライブラリは機能しました – hunkhusain

5

は、アイテムのあなたのコンストラクタでリストを作成します:

private ArrayList<Item> list; 

... 
public AdapterMain() { 
    list.add(new HeaderItem()); 
    list.add(new NormalItem()); 
    list.add(new HeaderItem()); 
    list.add(new NormalItem()); 
} 


public Item getItem(int position) { 
    return list.get(position); 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { 
    if (viewType == Item.TYPE_NORMAL) { 
     View v = inflater.inflate(R.layout.adapter_normal, viewGroup, false); 
     return new NormalViewHolder(v); 
    } else if (viewType == Item.TYPE_HEADER) { 
     View v = inflater.inflate(R.layout.adapter_header, viewGroup, false); 
     return new HeaderViewHolder(v); 
    } 
    return null; 
} 


@Override 
public int getItemViewType(int position) { 
    return list.get(position).getItemType(); 
} 

@Override 
public int getItemCount() { 
    return list.size(); 
} 

public abstract class Item { 
    public static final int TYPE_HEADER = 0; 
    public static final int TYPE_NORMAL = 1; 
    public abstract void bindToViewHolder(RecyclerView.ViewHolder holder); 
    public abstract int getItemType(); 
} 

実際の見出し項目:(NormalItemクラスとNormalViewHolderクラスも作成します)

public class HeaderItem extends Item { 
    public HeaderItem() { 
     super(); 
    } 

    @Override 
    public void bindToViewHolder(RecyclerView.ViewHolder viewholder) { 
     HeaderItem holder = (HeaderItem) viewholder; 
     holder.title.setText("Header"); 
    } 

    @Override 
    public int getItemType() { 
     return Item.TYPE_HEADER; 
    } 
} 

public class HeaderViewHolder extends RecyclerView.ViewHolder { 
    TextView title; 

    public HeaderViewHolder(View itemView) { 
     super(itemView); 
     title = itemView.findViewById(R.id.textview); 
    } 
} 
関連する問題