2015-04-22 169 views
0

我正在创建一个包含不同类型视图的列表。 像Facebook一样在移动应用程序中显示其供稿示例某些时候滚动视图或某些时间列表内部列表。recyclerview项目中的不同适配器

要做到这一点将是一个不错的选择。 如果我在回收站的每个项目中添加一个片段,该怎么办?像

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
> 

<fragment 
    android:layout_width="match_parent" 
    android:name="com.profile.EditProfileFragment" 
    android:layout_height="wrap_content"/> 

,并添加本作中Reclycleview一个项目,并保持其内部不同的逻辑。

任何人都可以告诉我如何去通过这个。

回答

0

我不认为这将是可能的使用片段作为一个行。片段有其自己的生命周期,我不在于RecyclerView可以控制的内容。 但你可以用简单的视图来做到这一点。

只是覆盖一些方法RecyclerView.Adapter

private ArrayList<Data> items = new ArrayList<>(); // data associated 
// with each row 

@Override 
public int getItemViewType(int position) { 
    return items.get(position).getRowType(); 
// assuming this is the getter to get the type 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    switch (viewType) { 
     case Data.TYPE_A: 
      View convertView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.row_feed, parent, false); 
      return new ViewHolderTypeA(convertView); 
     case Data.TYPE_B: 
     ... 
     default: 
      return null; 
    } 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    Data data = items.get(position); 

    if (holder instanceof ViewHolderTypeA) { 
     ViewHolderTypeA holderA= (ViewHolderTypeA) holder; 
     // manipulate the views in view holder for this type 
     ... 
    }else if (holder instanceof ViewHolderTypeB){ 

    } 
} 

编辑:你并不需要不同的适配器为每个项目。你只需要包含所有逻辑的项目。所以,如果你想有两种类型,一种为状态,一个用于照片像Facebook养活那么你的项目将是:

class Data { 
    String status, photoUrl; 
} 

当然一些成员将根据该行是空的。

+0

我知道这一点,也用于然而,如果我想为每个项目然后添加一个不同的逻辑。意味着我必须为每个项目添加一个适配器。 – Bora

+0

我编辑了我的答案。 – inmyth

相关问题