Moh*_*him 11 android android-layout recycler-adapter android-recyclerview
任何想法如何LayoutManager在一个视图中使用两个不同的?我在屏幕和底部的顶格四张牌,我想LinearLayout,但RecyclerView一次显示一个视图
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(mLayoutManager);
RecyclerView.LayoutManager lmLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(lmLayoutManager);
recyclerView.addItemDecoration(new GridSpacingDashboard(2, dpToPx(2), true));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以在单个RecyclerView或者在索引OI上使用两个视图,GridLayout并且在1上显示LinearLayout,如果有任何可能性,如何实现
更新(卡适配器)
public class CardAdapter extends RecyclerView.Adapter<adapter.CardAdapter.CardViewHolder> {
public static final int topGridCard = 0;
public static final int bottomCards=1;
private Context mContext;
private List<CardModel> cardList;
public CardAdapter(Context mContext, List<CardModel> cardList) {
this.mContext = mContext;
this.cardList = cardList;
}
@Override
public.adapter.CardAdapter.CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v;
if (viewType == topGridCard) {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_sec, parent, false);
return new adapter.CardAdapter.TopGridCardView(v);
}
else if (viewType == bottomCards) {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view, parent, false);
return new adapter.CardAdapter.BottomCardView(v);
}
return null;
}
@Override
public void onBindViewHolder(final adapter.CardAdapter.CardViewHolder holder, final int position) {
CardModel cardModel = cardList.get(position);
if (holder.getItemViewType()==topGridCard){ adapter.CardAdapter.TopGridCardView vholder = (adapter.CardAdapter.TopGridCardView) holder;
vholder.secTitleStats.setText(cardModel.getNumStats());
vholder.secNumStats.setText(cardModel.getCardTitles());
vholder.secCardStats.setText(cardModel.getSecCartNumStats());
Glide.with(mContext).load(cardModel.getThumbnail()).into(vholder.secthumbnail);
}
else if(holder.getItemViewType()==bottomCards){
adapter.CardAdapter.BottomCardView vholder = (adapter.CardAdapter.BottomCardView) holder;
vholder.numStats.setText(cardModel.getNumStats());
vholder.image_title.setText(cardModel.getCardTitles());
Glide.with(mContext).load(cardModel.getThumbnail()).into(vholder.thumbnail);
}
}
@Override
public int getItemCount(){
return cardList.size();
}
public static class CardViewHolder extends RecyclerView.ViewHolder {
public CardViewHolder(View v) {
super(v);
}
}
public class TopGridCardView extends adapter.CardAdapter.CardViewHolder {
public TextView secTitleStats, secNumStats,secCardStats;
public ImageView secthumbnail;
public TopGridCardView(View view){
super(view);
secTitleStats = (TextView) view.findViewById(R.id.secTitleNumStats);
secNumStats = (TextView) view.findViewById(R.id.secCardNumStats);
secCardStats = (TextView) view.findViewById(R.id.sectitle);
secthumbnail = (ImageView) view.findViewById(R.id.seCthumbnail);
}
}
public class BottomCardView extends adapter.CardAdapter.CardViewHolder {
public TextView numStats,image_title;
public ImageView thumbnail;
public BottomCardView(View view) {
super(view);
numStats=(TextView)view.findViewById(R.id.numStatics);
image_title=(TextView) view.findViewById(R.id.title_overlay);
thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
}
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position))
return topGridCard;
return bottomCards;
}
private boolean isPositionHeader(int position) {
return position == 0;
}
}
Run Code Online (Sandbox Code Playgroud)
我附上了我的适配器只是为了更多的理解,应该是什么样的结果|网格卡1 | 网格卡2 | |网格卡3 | 网格卡4 | | LinearLayout卡1 | | LinearLayout卡2 |
任何可能性
Dam*_*ian 36
你可以简单地使用不同viewType的gridLayout来实现这一点.
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch (adapter.getItemViewType(position)) {
case MenuAdapter.ITEM:
return 1;
case MenuAdapter.FULLSIZE:
return 2;
default:
return 1;
}
}
});
recyclerView.setLayoutManager(mLayoutManager);
Run Code Online (Sandbox Code Playgroud)
其中ITEM是网格(2x列)然后返回1,否则FULLSIZE返回2(采用2x网格列).
希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
3794 次 |
| 最近记录: |