如何在回收站视图中使用水平视图寻呼机

How to use horizontal view pager inside recycler view

我想在回收器视图中使用 viewpager,并在来自 api 的寻呼机上设置数据。

有关更多详细信息,我正在添加我的相关代码。

我的密码是

 public void onBindViewHolder(final worksheetAdapter.CustomViewHolder holder, final int position) {

        final int a = position;            rec_worksheet.setTag(position);

在 TextView 上设置文本

        holder.question.setText(userlist.get(position).get("ques"));
        holder.question.startAnimation(animFadein);
        holder.tvans1.setText(userlist.get(position).get("ans1"));
        holder.tvans1.startAnimation(animFadein);
        holder.tvans2.setText(userlist.get(position).get("ans2"));
        holder.tvans2.startAnimation(animFadein);
        holder.tvans3.setText(userlist.get(position).get("ans3"));
        holder.tvans3.startAnimation(animFadein);
        holder.tvans4.setText(userlist.get(position).get("ans4"));
        holder.tvans4.startAnimation(animFadein);
        holder.submitbtn.setVisibility(View.GONE);
        if(position == userlist.size()  - 1){
            holder.submitbtn.setVisibility(View.VISIBLE);
        }

        holder.queNo.setText("Question No "+String.valueOf(position+1));
        holder.tvTotalQue.setText("Total Ques. "+String.valueOf(userlist.size()));
        holder.tvSubName.setText(userlist.get(position).get("subject_name"));

        holder.submitbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                submit();
            }
        });

检查第一个答案是否等于正确答案

        holder.llAns1.setTag(position);
        holder.llAns1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 v.getTag(position);
                   holder.llAns1.setBackgroundResource(R.drawable.que_correct_back); 
                   holder.llAns2.setBackgroundResource(R.drawable.round_strock_green);
                   holder.llAns3.setBackgroundResource(R.drawable.round_strock_green);
                   holder.llAns4.setBackgroundResource(R.drawable.round_strock_green);

                allAns.add(userlist.get(position).get("ans1"));

                correctans = userlist.get(position).get("correctans");

                if(holder.tvans1.getText().toString().equals(correctans)){
                    CorrectAns.add(userlist.get(position).get("ans1"));     
                }else {
                    try {
                        wrongAns.add(userlist.get(position).get("ans1"));
                        CorrectAns.remove(position);
                    }catch (IndexOutOfBoundsException e){}
                }
            }
        });

检查第二个答案是否等于正确答案

        holder.llAns2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                holder.llAns2.setTag(position);

                holder.llAns2.setBackgroundResource(R.drawable.que_correct_back); 
                holder.llAns1.setBackgroundResource(R.drawable.round_strock_green);
                holder.llAns3.setBackgroundResource(R.drawable.round_strock_green);
                holder.llAns4.setBackgroundResource(R.drawable.round_strock_green);

                correctans = userlist.get(position).get("correctans");
                if(holder.tvans2.getText().equals(correctans)){
                    CorrectAns.add(userlist.get(position).get("ans2"));                    
                }else {
                    try {
                        wrongAns.add(userlist.get(position).get("ans2"));
                        CorrectAns.remove(correctans);
                    }catch (IndexOutOfBoundsException e){}

                }
            }
        });

检查第三个答案是否等于正确答案

        holder.llAns3.setTag(position);
        holder.llAns3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                holder.llAns3.setBackgroundResource(R.drawable.que_correct_back); 
                holder.llAns2.setBackgroundResource(R.drawable.round_strock_green);
                holder.llAns1.setBackgroundResource(R.drawable.round_strock_green);
                holder.llAns4.setBackgroundResource(R.drawable.round_strock_green);
                correctans = userlist.get(position).get("correctans");

                if(holder.tvans3.getText().equals(correctans)){
                    CorrectAns.add(userlist.get(position).get("ans3"));


                }else {
                    try {
                        wrongAns.add(userlist.get(position).get("ans3"));
                        CorrectAns.remove(correctans);
                    }catch (IndexOutOfBoundsException e){}

                }

            }
        });

检查答案是否等于正确答案

        holder.llAns4.setTag(position);
        holder.llAns4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                holder.llAns4.setBackgroundResource(R.drawable.que_correct_back);
                holder.llAns3.setBackgroundResource(R.drawable.round_strock_green);
                holder.llAns2.setBackgroundResource(R.drawable.round_strock_green);
                holder.llAns1.setBackgroundResource(R.drawable.round_strock_green);
                correctans = userlist.get(position).get("correctans");


                if(holder.tvans4.getText().equals(correctans)){
                    CorrectAns.add(userlist.get(position).get("ans4"));
                    Log.d("corrAns1",String.valueOf(CorrectAns));

                }else {
                    try {
                        wrongAns.add(userlist.get(position).get("ans1"));
                        CorrectAns.remove(correctans);
                    }catch (IndexOutOfBoundsException e){}
                    Log.d("corrAns2",String.valueOf(CorrectAns));
                }

            }
        });
    }

您不能在 recyclerview 中使用 viewpager。如果你想在 recyclerview 中使用水平滑动,那么你将不得不在 recyclerview 中使用 recyclerview。这个子 recyclerview 将有一个水平布局。

恰恰解决了这个问题。

第 2 期:

添加以下行

holder.llAns2.setBackgroundResource(R.drawable.round_strock_green); 
holder.llAns1.setBackgroundResource(R.drawable.round_strock_green);
holder.llAns3.setBackgroundResource(R.drawable.round_strock_green);
holder.llAns4.setBackgroundResource(R.drawable.round_strock_green);

此行以下:

if(position == userlist.size()  - 1){
    holder.submitbtn.setVisibility(View.VISIBLE);
}

第 3 期: //在你的适配器下面添加这个 class 私人 ArrayList selectedOptions;

在你的 onbindviewholder 下面添加这个 holder.llAns4.setBackgroundResource(R.drawable.round_strock_green)

if(selectedOptions.get(position) != null){
    switch (selectedOptions.get(position)){
       case 1:
        holder.llAns1.setBackgroundResource(R.drawable.que_correct_back);
        break;
       case 2:
        holder.llAns2.setBackgroundResource(R.drawable.que_correct_back);
        break;
       case 3:
        holder.llAns3.setBackgroundResource(R.drawable.que_correct_back);
        break;
       case 4:
        holder.llAns4.setBackgroundResource(R.drawable.que_correct_back);
        break;
     }
    } 

我现在已经回答了 3 件事。请询问新的 Whosebug 问题以了解更多问题。