Boa noite, segue o código abaixo, relacionado ao listiview
manifesto.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gilmar.agenda">
<uses-permission android:name="android.permission.CALL_PHONE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ListaAlunosActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".FormularioActivity">
</activity>
</application>
</manifest>
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
activity_lista_aluno.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:id="@+id/activity_lista_alunos"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/listaAlunos_lista"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<Button
android:layout_width="56dp"
android:layout_height="56dp"
android:id="@+id/listaAlunos_novoAluno"
android:text="+"
android:textColor="#ffffff"
android:textSize="40sp"
android:elevation="6dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp"
android:stateListAnimator="@null"
android:background="@drawable/fundo"/>
</RelativeLayout>
Classe ListaAluno
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_alunos);
//Classe para tratar as referencias do xml e da classe
parseViewAluno = new ParseViewAluno(this);
listaAluno = parseViewAluno.getLista();
//Listener da listView Alunos
listaAluno.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View item, int position, long id) {
//Envia os dados do aluno, pego no item da list view e envia para o formulario usando a intent
aluno = (Aluno) listaAluno.getItemAtPosition(position);
Intent vaiParaFormulario = new Intent(ListaAlunosActivity.this, FormularioActivity.class);
vaiParaFormulario.putExtra("Aluno", aluno);
startActivity(vaiParaFormulario);
}
});
//Botão adicionar novo aluno
Button novoAluno = (Button) findViewById(R.id.listaAlunos_novoAluno);
novoAluno.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent vaiParaFormulario = new Intent(ListaAlunosActivity.this, FormularioActivity.class);
startActivity(vaiParaFormulario);
}
});
//Autoriza os itens da list view que permitam o uso de menu de contexto
registerForContextMenu(listaAluno);
}
Classe Auxiliar ParseView
//classe auxiliar para tratar as referencias do xml e das classes
public class ParseViewAluno {
private ControlaAlunoDB alunoDB;
private Aluno aluno;
private EditText cNome;
private EditText cEndereco;
private EditText cTelefone;
private EditText cSite;
private RatingBar cNota;
private ListView lista;
private ListAdapter adapter;
private Context context;
private Activity activity;
//Construtor que recebe uma instacia de FormularioActivity e aluno
public ParseViewAluno(FormularioActivity activity, Aluno aluno){
getViewAluno(activity);
this.aluno = aluno;
}
//Construtor que recebe uma instacia de FormularioActivity e dados do aluno
public ParseViewAluno(FormularioActivity activity, boolean isId, Long id) {
getViewAluno(activity);
//Se isId for igual a true, uma nova instancia de aluno com uma id já existente é criada
if(isId){
aluno = new Aluno(id, cNome.getText().toString(), cEndereco.getText().toString(),
cTelefone.getText().toString(), cSite.getText().toString(),
Double.valueOf(cNota.getProgress()));
}
//Se isId for igual a false, uma nova instancia de aluno sem id é criada
else{
aluno = new Aluno(cNome.getText().toString(), cEndereco.getText().toString(),
cTelefone.getText().toString(), cSite.getText().toString(),
Double.valueOf(cNota.getProgress()));
}
}
//Construtor que recebe uma instacia de ListaActivity
public ParseViewAluno(ListaAlunosActivity activity) {
context = activity.getApplicationContext();
lista = (ListView) activity.findViewById(R.id.listaAlunos_lista);
}
//Faz uma parse das view no xml para os atributos da classe que fazem referencia
public void getViewAluno(Activity activity){
cNome = (EditText) activity.findViewById(R.id.formulario_nome);
cEndereco = (EditText) activity.findViewById(R.id.formulario_endereco);
cTelefone = (EditText) activity.findViewById(R.id.formulario_telefone);
cSite = (EditText) activity.findViewById(R.id.formulario_site);
cNota = (RatingBar) activity.findViewById(R.id.formulario_nota);
}
//Faz uma parse dos atributos da classe para as view no xml que fazem referencia
public void setViewAluno(){
cNome.setText(aluno.getNome());
cEndereco.setText(aluno.getEndereco());
cTelefone.setText(aluno.getTelefone());
cSite.setText(aluno.getSite());
cNota.setProgress(aluno.getNota().intValue());
}
//retorna uma istancia de aluno
public Aluno getAluno(){
return aluno;
}
//retorna uma lista de alunos buscada no db
public List<Aluno> getAlunos(){
alunoDB = new ControlaAlunoDB(context);
List<Aluno> alunos = alunoDB.findAll();
alunoDB.close();
return alunos;
}
//preenche os alunos na list view usando o adpter
public void listViewAlunos(){
ListAdapter adapter = new ArrayAdapter<Aluno>(context, android.R.layout.simple_list_item_1, getAlunos());
lista.setAdapter(adapter);
}
//retorna uma instancia da list view
public ListView getLista() {
return lista;
}
//recebe uma instancia da list view
public void setLista(ListView lista) {
this.lista = lista;
}
}