Recupere datos de la base de datos y configúrelos en una vista de lista personalizada

Retrieve Data from the database and set in custom listview but only show the last data from DB in list view.

this is my code please solve my problem.

SQLiteDatabase myDb = openOrCreateDatabase(DB_Name,Context.MODE_PRIVATE, null);
try {
    c=myDb.rawQuery("select sid,name,num from Contact", null);
    if (c.moveToFirst()) {
        do {
            name1=c.getString(c.getColumnIndex("name")).toString();
            num1=c.getString(c.getColumnIndex("num")).toString();
            Log.d("string is",name1+num1);
        }
        while (c.moveToNext());
    }
    valnumber.add(name1+"<<"+num1+">>");
    custlistAdapter = new CustListview(Contact.this, R.layout.custlistview,valnumber);
    ShowCont.setAdapter(custlistAdapter);
    myDb.close();

CustListview.java

public class CustListview extends ArrayAdapter {

private final Activity context;
private final ArrayList<String> web;
 int layoutResourceId;
public CustListview(Activity context,int custlistview, List<String> val)
{
super(context, R.layout.custlistview, val);
this.context = context;
this.web = (ArrayList<String>) val;
}
@Override
public View getView(int position, View Convertview, ViewGroup parent) {
View row=Convertview;
    UserHolder holder = null;

    if(row==null)
    {
        LayoutInflater inflater=((Activity)context).getLayoutInflater();
        row=inflater.inflate(R.layout.custlistview, null, true);
        holder=new UserHolder();
        holder.imgdelete=(Button)row.findViewById(R.id.imagedelete);
        holder.txtTitle = (TextView) row.findViewById(R.id.txt);
        //LayoutInflater inflater = context.getLayoutInflater();
        //View rowView= inflater.inflate(R.layout.custlistview, null, true);
        row.setTag(holder);
    }
    else    
        {
    holder=(UserHolder)row.getTag();
        }            
    holder.txtTitle.setText(web.toString());
    holder.imgdelete.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    Toast.makeText(getContext(), "delete", Toast.LENGTH_LONG).show();
}});
return row;
}
static class UserHolder {
     TextView txtTitle;
     Button imgdelete;
 }}

preguntado el 27 de noviembre de 13 a las 18:11

Logic error. Move valnumber.add(name1+"<<"+num1+">>"); in while loop. -

i try this also but same last data are show. -

2 Respuestas

Try somthing like that

cursor = sqldb.query("Contact", null, null, null, null, null, "sid");
if (cursor != null && cursor.getCount() > 0) {
    if (cursor.moveToFirst()) {
          do { 
            name1=cursor.getString(cursor.getColumnIndex("name"));
                    num1=cursor.getString(cursor.getColumnIndex("num"));
                    Log.d("string is",name1+num1);
          } while (cursor.moveToNext());
    }
}
cursor.close();

respondido 27 nov., 13:18

i want to add this db data in custom list.. i add 3 line in before while statement. same this shows only last data in list view. valnumber.add(name1+"<<"+num1+">>"); custlistAdapter = new CustListview(Contact.this, R.layout.custlistview,valnumber); ShowCont.setAdapter(custlistAdapter); //listview - Viveka Patel

Did you check how many names and number you are getting from the database. Your code was only adding one row in the array which you have to move inside the while loop.

SQLiteDatabase myDb = openOrCreateDatabase(DB_Name,Context.MODE_PRIVATE, null);
try {
    c=myDb.rawQuery("select sid,name,num from Contact", null);
    if (c.moveToFirst()) {
        do {
            name1=c.getString(c.getColumnIndex("name"));
            num1=c.getString(c.getColumnIndex("num"));
            Log.d("string is",name1+num1);
           valnumber.add(name1+"<<"+num1+">>");

        }
        while (c.moveToNext());
    }
    custlistAdapter = new CustListview(Contact.this, R.layout.custlistview,valnumber);
    ShowCont.setAdapter(custlistAdapter);
    myDb.close();

respondido 27 nov., 13:19

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.