使用具有相同回收视图的两种布局



我有个问题。我用JSON文件中的数据填充了卡片视图的字段,并将它们显示在回收视图中。现在,我想要的是使用两种不同类型的卡片视图来显示数据。

JSON 示例

{
    {
        "id":"3",
        "title":"Title1",
        "place":"Stade omnisport de lomu00e9",
        "imageUrl":"./uploads/thumbs/20150907133004.jpg",
        "Description":"Lorem ipsum dolor erit ex, quis mollis massa sollicitudin eu. Mauris congue auctor placerat",
        "codeCity":"1"
    },
    {
        "id":"15",
        "title":"Title2",
        "place":"centre culturelle arena",
        "imageUrl":"./uploads/thumbs/C3.PNG",
        "Description":"Lorem ultrices dapibus. Praesent feugiat hendrerit ex, quis mollis massa sollicitudin eu. Mauris congue auctor placerat",
        "codeCity":"1"
    }
    {
        "id":"85",
        "title":"Title3",
        "place":"centrena",
        "imageUrl":"./uploads/thumbs/A4.PNG",
        "Description":"Lorem ultrices dapibus. Praesent feugiat hendrerit ex, quis mollis massa sollicitudin eu. Mauris congue auctor placerat",
        "codeCity":"2"
    }   
}

我想根据城市代码使用不同的视图。例如,对于代码城市"1",我使用视图1,而对于代码城市2,我则使用视图2。在我的代码的哪一部分,我必须做到这一点,以及如何做到?

请参阅此链接:https://guides.codepath.com/android/Heterogenous-Layouts-inside-RecyclerView.这是你可以通过基本的谷歌搜索找到的东西。建议下次,在创建新问题之前彻底搜索

@Override
public int getItemViewType( int position )
{
    String elementName = items.get( position );
    switch(elementName)
    {
        case "1": TYPE_ONE; break;
        case "2": TYPE_TWO; break;
        default 0; break;
    }
}
@Override
public ViewHolder onCreateViewHolder( ViewGroup viewGroup, int viewType )
{
     LayoutInflater mInflater = LayoutInflater.from( viewGroup.getContext( ) );
     ViewHolder viewGroupList;
     switch(viewType)
     {
         case "1": View view1 = mInflater.inflate( R.layout.view1, viewGroup, false );
            viewGroupList = new ViewHolder1( view1 );
            break;
         case "2": View view2 = mInflater.inflate( R.layout.view2, viewGroup, false );
            viewGroupList = new ViewHolder2( view2 );
            break;
     }
     return viewGroupList;
}

最新更新