【问题标题】:Recyclerview Inflate 2 LayoutRecyclerview Inflate 2 布局
【发布时间】:2016-05-28 11:31:26
【问题描述】:

我开发了可加载所有可用优惠券的优惠券页面。但我还需要在其中包含幻灯片。

Recyclerview 包括 2 个主要布局:

  • 幻灯片 (slideshow.xml)
  • 卡片视图 (card_view_horizo​​ntal.xml)

我当前的代码用于仅将 cardview 加载到 recyclerview。

import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by venkataprasad on 02-01-2015.
 */
public class VoucherDataAdapter extends RecyclerView.Adapter<VoucherDataAdapter.ViewHolder> {

    private static ArrayList<FeddProperties> dataSet;

    public VoucherDataAdapter(ArrayList<FeddProperties> os_versions) {

        dataSet = os_versions;
    }


    @Override
    public VoucherDataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
// create a new view
        View itemLayoutView = LayoutInflater.from(viewGroup.getContext()).inflate(
                R.layout.card_view_horizontal, null);

        // create ViewHolder

        ViewHolder viewHolder = new ViewHolder(itemLayoutView);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(VoucherDataAdapter.ViewHolder viewHolder, int i) {

        FeddProperties fp = dataSet.get(i);

        viewHolder.tvVersionName.setText(fp.getTitle());
        viewHolder.iconView.setImageResource(fp.getThumbnail());
        viewHolder.feed = fp;
    }

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

    // inner class to hold a reference to each item of RecyclerView
    public static class ViewHolder extends RecyclerView.ViewHolder {

        public TextView tvVersionName;
        public ImageView iconView;

        public FeddProperties feed;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);

            tvVersionName = (TextView) itemLayoutView
                    .findViewById(R.id.tvVersionName);
            iconView = (ImageView) itemLayoutView
                    .findViewById(R.id.iconId);

            itemLayoutView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Intent intent = new Intent(v.getContext(), VoucherDetailActivity.class);
                    v.getContext().startActivity(intent);
                    //Toast.makeText(v.getContext(), "os version is: " + feed.getTitle(), Toast.LENGTH_SHORT).show();
                }
            });


        }

    }
}

如果您有任何建议,请告诉我。提前致谢!

【问题讨论】:

  • 请张贴xml代码。

标签: android xml android-layout android-studio android-recyclerview


【解决方案1】:

根据您的问题,您需要一个 recyclerview 来扩大您的slideshow.xml(可能在位置0)和card_view_horizontal.xml 在列表的其余部分。

检查this article

我确定这就是你想要的。

同时检查thisthis

【讨论】:

    【解决方案2】:

    在堆栈上检查这个答案RecyclerView with multiple view type

    你需要实现getItemViewType(),

    @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(...);
                 ...
             }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2020-10-14
      • 1970-01-01
      相关资源
      最近更新 更多