Почему только последний элемент в списке HashMas отображается в RecyclerView с CardView? - PullRequest
0 голосов
/ 08 июля 2020

Я новичок в Android, я искал другие темы, но не нашел ничего действительно поучительного. Должно быть, это какая-то неясность, которую я не вижу. Большое спасибо за помощь.

  • Адаптер:
public class Adaptador_RV extends RecyclerView.Adapter<Adaptador_RV.AsignViewHolder> {
    List<Asignatura> datos;

    public static class AsignViewHolder extends RecyclerView.ViewHolder {

        CardView cv;
        TextView titulo;

        public AsignViewHolder (View view) {
            super(view);
            cv = (CardView) itemView.findViewById(R.id.cv);
            titulo = (TextView) itemView.findViewById(R.id.titulo);
        }
    }

    public Adaptador_RV(List<Asignatura> datos){
        this.datos = datos;
    }

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

    @Override
    public void onBindViewHolder(@NonNull AsignViewHolder asignViewHolder, int i) {
        asignViewHolder.titulo.setText(datos.get(i).getDatos().get("titulo").toString());
    }

    @Override
    public int getItemCount() {
        return datos.size();
    }
}
  • Пункт:
    class Asignatura {
        private final HashMap<String,Object> datos;
    
        public Asignatura (HashMap<String,Object> datos){
            this.datos = datos;
        }
    
        public HashMap<String,Object> getDatos (){
            return datos;
        }
    }
  • MainActivity:
      public class MainActivity extends AppCompatActivity {
    
        private HashMap<String,Object> test1 = new HashMap<String, Object>();
        private HashMap<String,Object> test2 = new HashMap<String, Object>();
        private Asignatura asign1;
        private Asignatura asign2;
        private List<Asignatura> tarjetas = new ArrayList<Asignatura>();
        private RecyclerView rv;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            test1.put("titulo", "prueba_1");
            test2.put("titulo", "prueba_2");
            asign2 = new Asignatura(test2);
            asign1 = new Asignatura(test1);
    
            setContentView(R.layout.activity_main);
    
            rv = (RecyclerView) findViewById(R.id.rv);
            LinearLayoutManager lm = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
            rv.setLayoutManager(lm);
    
            tarjetas.add(asign2);
            tarjetas.add(asign1);
    
            Adaptador_RV adaptador = new Adaptador_RV(tarjetas);
            rv.setAdapter(adaptador);
        }
    }

Последний добавленный элемент всегда отображается мне, но остальные не отображаются. Я пробовал использовать setIsRecycable (false) в onBindViewHolder, но он тоже не работает.

...