Error in returning ListView object list

1

Here is my main class:

public class MainActivity extends AppCompatActivity {

    public ListView lista;
    ArrayAdapter<Aluno> adapter;

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


        lista = (ListView)findViewById(R.id.list);
        List<Aluno> alun = criarAlunos();
        adapter = new ArrayAdapter<Aluno>(this,android.R.layout.simple_list_item_1,alun);
        lista.setAdapter(adapter);


    }
    public List<Aluno> criarAlunos(){
        List<Aluno> lista = new ArrayList<Aluno>();
        lista.add(criarAluno("Ramon","Masculino","Portugues","Carla",27,01));
        return lista;
    }
    private Aluno criarAluno(String nomeAluno, String sexoAluno, String materiaAluno, String listProfMateria, int idadeAluno, int codigoAluno) {
        Aluno student = new Aluno(nomeAluno,sexoAluno,materiaAluno,listProfMateria,idadeAluno,codigoAluno);
        return student;
    }
}'

    public class Aluno {
    private String nomeAluno;
    private String sexoAluno;
    private String materiaAluno;
    private String listProfMateria;
    private int idadeAluno;
    private int codigoAluno;

    public Aluno() {
    }
    public Aluno(String nomeAluno, String sexoAluno, String materiaAluno, String listProfMateria, int idadeAluno, int codigoAluno) {

        super();
        this.nomeAluno = nomeAluno;
        this.sexoAluno = sexoAluno;
        this.materiaAluno = materiaAluno;
        this.listProfMateria = listProfMateria;
        this.idadeAluno = idadeAluno;
        this.codigoAluno = codigoAluno;
    }

    public String getNomeAluno() {
        return nomeAluno;
    }

    public void setNomeAluno(String nomeAluno) {
        this.nomeAluno = nomeAluno;
    }

    public String getSexoAluno() {
        return sexoAluno;
    }

    public void setSexoAluno(String sexoAluno) {
        this.sexoAluno = sexoAluno;
    }

    public String getMateriaAluno() {
        return materiaAluno;
    }

    public void setMateriaAluno(String materiaAluno) {
        this.materiaAluno = materiaAluno;
    }

    public String getListProfMateria() {
        return listProfMateria;
    }

    public void setListProfMateria(String listProfMateria) {
        this.listProfMateria = listProfMateria;
    }

    public int getIdadeAluno() {
        return idadeAluno;
    }

    public void setIdadeAluno(int idadeAluno) {
        this.idadeAluno = idadeAluno;
    }

    public int getCodigoAluno() {
        return codigoAluno;
    }

    public void setCodigoAluno(int codigoAluno) {
        this.codigoAluno = codigoAluno;
    }

    public String tostring(){
        return nomeAluno;

    }
}

    
asked by anonymous 03.01.2017 / 05:10

1 answer

0

You are trying to print the Aluno object in a list, however this is a ArrayAdapter with a simple_list_item_1 that defines only a String . For these cases it is legal to create a custom%%, to demonstrate on the screen each one of the characteristics of the student. Follow the steps below first by creating a Adapter :

public class CustomAdapter extends ArrayAdapter<Item> {

    public CustomAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    public ListAdapter(Context context, int resource, List<Aluno> alunos) {
        super(context, resource, alunos);
    }

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

        View v = convertView;

        if (v == null) {
            LayoutInflater vi;
            vi = LayoutInflater.from(getContext());
            v = vi.inflate(R.layout.itemlistrow, null);
        }

        Aluno alun = getItem(position);

        if (alun != null) {
            TextView nome = (TextView) v.findViewById(R.id.nome);
            TextView sexo = (TextView) v.findViewById(R.id.sexo);

            if (nome != null) {
                nome.setText(alun.getNome());
            }

            if (sexo != null) {
                sexo.setText(alum.getSexo());
            }

        }

        return v;
    }

}

In your Adapter you do it this way:

lista = (ListView)findViewById(R.id.list);
List<Aluno> alun = criarAlunos();    
ListAdapter customAdapter = new ListAdapter(this, R.layout.itemlistrow, alun );    
lista.setAdapter(customAdapter);

It is finally necessary to create a MainActivity in which you show the student-related items.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="math_parent" android:orientation="vertical"
    android:layout_width="math_parent">

        <TextView 
                  android:id="@+id/nome"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:text="id" android:textStyle="bold" 
                  android:gravity="left"
                  android:layout_weight="1" 
                  android:typeface="monospace"
                  android:height="40sp" />

        <TextView 
                  android:id="@+id/sexo"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:text="categoryId" 
                  android:layout_weight="1" 
                  android:height="20sp" />


</LinearLayout>
    
03.01.2017 / 06:03