Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre Adapter

Srs.

Tenho a seguinte classe:

package ifcat.com.br.senha;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class clsAdapter extends BaseAdapter {

    private final List<Tentativas> jogadasEfetuadas = new ArrayList<>();
    private Context contexto;

    public clsAdapter(Context contexto){
        this.contexto = contexto;
    }

    @Override
    public int getCount() {
        return jogadasEfetuadas.size();
    }

    @Override
    public Tentativas getItem(int position) {
        return jogadasEfetuadas.get(position);
    }

    @Override
    public long getItemId(int position) {
        return jogadasEfetuadas.get(position).getOrdem();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View vwLinha = LayoutInflater.from(contexto).inflate(R.layout.activity_jogo_jogada, parent, false);

        TextView ordem = vwLinha.findViewById(R.id.txtJogada_Ordem);
        TextView numero = vwLinha.findViewById(R.id.txtJogada_Numero);
        TextView resultado = vwLinha.findViewById(R.id.txtJogada_Resultado);

        Log.i("TAG", "getView: Aqui");

        Tentativas nTent = jogadasEfetuadas.get(position);

        ordem.setText(nTent.getOrdem());
        numero.setText(nTent.getNumero());
        resultado.setText(nTent.getResultado());

        return vwLinha;
    }

    public void clear() {
        jogadasEfetuadas.clear();
    }

    public void addAll(List<Tentativas> tentativasFeitas) {
        jogadasEfetuadas.addAll(tentativasFeitas);
    }
}

Observem que no getView tenho um Log.i("TAG", "getView: Aqui") que nunca aparece.

Na minha activity tenho essa declaração e essa função:

    private clsAdapter adapter;

    private void configuraListaTentativas() {
        ListView lista =  findViewById(R.id.lstTentativas);

        adapter = new clsAdapter(activity_Jogo.this);
        lista.setAdapter(adapter);
    }

E quando faço a jogada, tenho o seguinte código:

        adapter.clear();
        adapter.addAll(jogando.retornaTentativas());

Essa função retornaTentativas devolve uma lista de tentativas (já fiz o teste e está correto).

O problema é que não preenche minha lista, que está assim, no arquivo activity_jogo_jogada.xml:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/txtJogada_Ordem"
        android:layout_width="45dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/txtJogada_Numero"
        android:textAlignment="center"
        android:textSize="20sp"
        tools:text="ordem da jogada" />

    <TextView
        android:id="@+id/txtJogada_Numero"
        android:layout_width="132dp"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/txtJogada_Resultado"
        android:textSize="20sp"
        android:textStyle="bold"
        android:textAlignment="center"
        tools:text="valor jogado" />

    <TextView
        android:id="@+id/txtJogada_Resultado"
        android:layout_width="210dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:textSize="20sp"
        tools:text="teste do resultado" />

</RelativeLayout>

Não consigo achar o erro. Quem puder ajudar, agradeço.

2 respostas
solução!

Oi

Você precisa avisar ao adapter que os dados tiverem mudança, para isso a galera usa o método notifyDataSetChanged do adapter, recomendo colocar quando chamar o addAll

Obrigado, Matheus

Deu certo. Colocando esse método me mostrou onde estava o erro.

Muito obrigado,

Roberto

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software