RecyclerView и RadioGroup - PullRequest
       28

RecyclerView и RadioGroup

0 голосов
/ 01 октября 2018

Я хочу, чтобы вы помогли мне со следующим.У меня есть изображение с 5 альтернативами с recyclerView и RadioGroup.Как я могу получить выбор, который пользователь сделал в радиокнопке на каждом изображении?затем я передаю коды 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) {

}
}

Когда пользователь нажимает кнопку результата, я хочу, чтобы он сказал мне, был ли ответ правильным или неправильным.enter image description here

1 Ответ

0 голосов
/ 01 октября 2018

Для получения выбора вы можете использовать этот код в вашем 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();
            }
        });

Надеюсь, он вам поможет

...