【问题标题】:How to inflate xml file on items of recylerview?如何在 recyclerview 的项目上膨胀 xml 文件?
【发布时间】:2017-07-10 08:33:46
【问题描述】:

我正在使用库将鼠标悬停在 recylerview 的项目上,但项目的列表器无法正常工作,它以前工作过,而且问题是 -- 是在另一个膨胀的 xml 文件上膨胀新的 xml 文件的正确方法吗?

提前致谢。

public class LessonVideoAdapter extends RecyclerView.Adapter<LessonVideoAdapter.LessonDataHolder> {

    private List<VideoList> slipList;


    public LessonVideoAdapter() {
        slipList = new ArrayList<>();
        slipList.add(new VideoList("Chapter 1", R.drawable.demo_one));
        slipList.add(new VideoList("Chapter 2", R.drawable.demo_two));
        slipList.add(new VideoList("Chapter 3", R.drawable.demo_one));
        slipList.add(new VideoList("Chapter 4", R.drawable.demo_two));


    }

    @Override
    public LessonDataHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        Context context = parent.getContext();
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.abc_card_view_video, parent, false);

        return new LessonDataHolder(view);

    }

    @Override
    public void onBindViewHolder(LessonDataHolder holder, int position) {

        VideoList s = slipList.get(position);
        holder.bindSlip(s);

    }

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


    public class LessonDataHolder extends RecyclerView.ViewHolder {

        public BlurLayout samplelayout;
        private TextView nameOfSlip;
        private ImageView slipImage;
        private Context context;


        public LessonDataHolder(View itemView) {
            super(itemView);

            context = itemView.getContext();
            nameOfSlip = (TextView) itemView.findViewById(R.id.demoText);
            slipImage = (ImageView) itemView.findViewById(R.id.imageViewDemoVideo);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    {
                        Log.d("ashu", " clicked " + getAdapterPosition());

                    }
                }
            });
        }

        public void bindSlip(VideoList videoList) {
            nameOfSlip.setText(videoList.stringSlipName);
            slipImage.setImageResource(videoList.stringImage);
        }
    }


    public class VideoList {
        public String stringSlipName;
        public int stringImage;

        public VideoList(String stringSlipName, int stringImage) {
            this.stringImage = stringImage;
            this.stringSlipName = stringSlipName;
        }

    }
}

【问题讨论】:

  • 如果您的意思是 clickListener 没有触发,那么请发布更多关于您真正想要做什么的详细信息以及您的查看器的 xml 以及您将上述代码放在哪里。使用日志记录来验证点击侦听器是否正在触发
  • 首先检查点击监听器是否被调用。您还为getAdapterPosition 添加了条件。我认为以这种方式膨胀是不对的。请参阅此库以获取悬停视图:github.com/daimajia/AndroidViewHover
  • @AkshayChordiya 是的,我使用的是同一个库,你用过吗?
  • 不,我没用过。您能否详细说明您面临的问题?
  • 请分享您的 viewHolder xml。根据您上面的代码,单击侦听器将仅针对 recyclerView 的第一项触发

标签: android android-recyclerview hover onclicklistener


【解决方案1】:

没有看到你的 xml,根据我的理解,我建议试试这个 -

onCreateViewHolder() 替换成这个

View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.abc_card_view_video, parent, false);
return new LessonDataHolder(v);  

and 在 itemView.setOnClickListener() 之前放这个 -

itemView.setClickable(true); 

我不确定膨胀 xml 的正确方法,但我使用下面的代码在我需要的地方膨胀 xml,除了 recyclerView 适配器 onCreateViewHolder() 方法回调 -

View view = getLayoutInflater(null).inflate(R.layout.scanner_manual_entry, null);

如果这解决了您的问题,请将此帖子标记为答案。
希望这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多