I'm making an application that should print a list of tasks, the tasks will get them from the database, using a custom ListView with a TextView and a CheckBox. The problem comes when I print the tasks extracted from the database only print 1 of the tasks the last one, since if I enter more tasks when updating only shows the newly entered. I leave the codes, I hope you can help me
//MainActivity.java
package com.example.hermanos.basededatos;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.lang.reflect.Array;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView lv;
public DatosAdapter adapter;
Datos datos[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv= (ListView)findViewById(R.id.lista);
Basededatos n_user = new Basededatos(this,"Registro",null,1);
SQLiteDatabase bd = n_user.getWritableDatabase();
String sql="SELECT * FROM tareas";
Cursor registros= bd.rawQuery(sql,null);
if(registros.moveToFirst()){
while(registros.moveToNext()){
datos= new Datos[]{new Datos(registros.getString(1))};
}
}
View header = (View)getLayoutInflater().inflate(R.layout.list_header_row,null);
lv.addHeaderView(header);
adapter = new DatosAdapter(this, R.layout.listview_item_row,datos);
lv.setAdapter(adapter);
}
public void n_user(View view){
Intent i = new Intent(this, Main2Activity.class);
startActivity(i);
}
}
//Datos.java
package com.example.hermanos.basededatos;
public class Datos {
public String tarea;
/*public Datos(){
super();
}*/
public Datos(String tarea){
super();
this.tarea = tarea;
}
}
//DatosAdapter.java
package com.example.hermanos.basededatos;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class DatosAdapter extends ArrayAdapter<Datos> {
Context mycontext;
int mylayout_resourseID;
Datos mydata[] = null;
public DatosAdapter(Context context,int layout_resourseID, Datos[] data){
super(context,layout_resourseID,data);
this.mycontext = context;
this.mylayout_resourseID = layout_resourseID;
this.mydata = data;
}
public View getView(int position, View convertView, ViewGroup parent){
View row = convertView;
Datosholder holder = null;
if(row==null){
LayoutInflater inflater = ((Activity)mycontext).getLayoutInflater();
row = inflater.inflate(mylayout_resourseID,parent,false);
holder = new Datosholder();
holder.textview = (TextView)row.findViewById(R.id.txt);
row.setTag(holder);
}else{
holder = (Datosholder)row.getTag();
}
Datos datos = mydata[position];
holder.textview.setText(datos.tarea);
return row;
}
static class Datosholder{
TextView textview;
}
}