【问题标题】:RecyclerView and RadioGroupRecyclerView 和 RadioGroup
【发布时间】:2019-03-06 02:14:28
【问题描述】:

我希望您在以下方面帮助我。 我有一个带有 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) {

}
}

当用户点击结果按钮时,我希望他告诉我答案是正确还是错误。

【问题讨论】:

  • 有了这样的静态代码,为什么要使用RecyclerView

标签: android android-recyclerview radio-button radio-group


【解决方案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();
            }
        });

希望对你有帮助

【讨论】:

  • 我是 android 新手,我已经放置了你给我的代码,但我无法让它工作。最终的代码会是什么样子?
猜你喜欢
  • 1970-01-01
  • 2019-04-05
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多