0

我希望你帮我做以下事情。我有一个带有 recyclerView 和 RadioGroup 的 5 个替代方案的图像。如何获取用户在每个图像的单选按钮中所做的选择?然后我通过 java 和 xml 代码。

代码类Anime.java

public class Anime {
private int imagen;

public Anime(int imagen) {
    this.imagen = imagen;
}
public int getImagen() {
    return imagen;
}
}

代码 AnimeAdapter.java

public class AnimeAdapter extends RecyclerView.Adapter<AnimeAdapter.AnimeViewHolder> {
private List<Anime> items;

public static class AnimeViewHolder extends RecyclerView.ViewHolder {

    // Campos respectivos de un item
    public ImageView imagen;
    private RadioGroup group;
    private int ids_respuestas[] =
            {R.id.respuesta1, R.id.respuesta2, R.id.respuesta3, R.id.respuesta4, R.id.respuesta5};

    public AnimeViewHolder(View v) {
        super(v);
        imagen = v.findViewById(R.id.imagen);
        group = v.findViewById(R.id.answer_group);
    }
}

public AnimeAdapter(List<Anime> items) {
    this.items = items;
}

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

@Override
public AnimeViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.anime_card, viewGroup, false);
    return new AnimeViewHolder(v);
}

@Override
public void onBindViewHolder(AnimeViewHolder viewHolder, int i) {
    viewHolder.imagen.setImageResource(items.get(i).getImagen());

}
}

代码 Activity.java

public class ThirdActivity extends AppCompatActivity {

//Declarar instancias globales
private RecyclerView recycler;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager lManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_third);


    // Inicializar Animes
    List<Anime> items = new ArrayList<>();

    items.add(new Anime(R.drawable.angel));
    items.add(new Anime(R.drawable.death));
    items.add(new Anime(R.drawable.fate));
    items.add(new Anime(R.drawable.nhk));
    items.add(new Anime(R.drawable.suzumiya));

    // Obtener el Recycler
    recycler = findViewById(R.id.reciclador);
    //recycler.setHasFixedSize(true);

    // Usar un administrador para LinearLayout
    lManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false);
    recycler.setLayoutManager(lManager);

    // Crear un nuevo adaptador
    adapter = new AnimeAdapter(items);
    recycler.setAdapter(adapter);
}

public void result(View view) {

}
}

当用户单击结果按钮时,我希望他告诉我答案是正确还是错误。 在此处输入图像描述

4

1 回答 1

1

为了获得选择,您可以在您的onBindViewHolder

holder.selectionState.setChecked(lastSelectedPosition == position);

这个代码在你的ViewHolder

selectionState.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lastSelectedPosition = getAdapterPosition();
                notifyDataSetChanged();

                Toast.makeText(OffersRecyclerViewAdapter.this.context,
                        "selected offer is " + offerName.getText(),
                                    Toast.LENGTH_LONG).show();
            }
        });

希望它会帮助你

于 2018-10-01T06:11:08.303 回答