2016-09-25 43 views
0

我試圖找出什麼路要走,爲了創建日期列表項在聊天中顯示消息屬於哪個日期。如何在recyclerview中添加聊天日期?

名單應該是這樣的:

我能做到這一點
--- 1 week ago --- 
msg 
msg 
msg 
msg 
msg 
----- today ----- 
msg 
msg 
msg 
msg 

的一種方法是通過創建日期時間的列表項,然後使用一些邏輯來決定哪些位置的日期 - 時間列表項應走。

我在想,可能會創建一個自定義列表分隔線來顯示日期,但我不確定這是否可能。

你們會如何處理這個問題?

回答

3

你知道RecyclerView有多種視圖類型。這意味着您可以根據需要繪製預定義的行。

在聊天的例子中,確切的日期和消息數據將填充在服務器端。你需要畫出準備好的信息(也許是json)。

我希望這個建議可以節省您的時間。

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 
    class ViewHolder0 extends RecyclerView.ViewHolder { 
     ... 
    } 

    class ViewHolder2 extends RecyclerView.ViewHolder { 
     ... 
    } 

    @Override 
    public int getItemViewType(int position) { 
     // Just as an example, return 0 or 2 depending on position 
     // Note that unlike in ListView adapters, types don't have to be contiguous 
     return position % 2 * 2; 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     switch (viewType) { 
      case 0: return new ViewHolder0(...); 
      case 2: return new ViewHolder2(...); 
      ... 
     } 
    } 
} 
+0

是的,我想這是確實的方式。我只是想,也許我能以不同的方式處理它。將日期時間變成真正的列表項目會在我的聊天列表中增加一些複雜性,但我認爲它是不可避免的。 – CantThinkOfAnything

+0

你對日期時間的複雜性是正確的。這就是爲什麼他們會在後端部分生成:-) –

+0

它不是日期時間的必要條件,它僅僅是我的列表有超過10個條目類型和相當複雜的邏輯,它使用條目位置來決定哪個條目應該具有哪種類型的信息。僅爲顯示日期添加更多類型會要求我擴展當前的邏輯以包含日期內容:p – CantThinkOfAnything