Search code examples
androidsqlitelistgarbage

Garabage value in list


i'm populating a list view to view my record, i've the following code...

            super.onCreate(savedInstanceState);
            setContentView(R.layout.total);
            ArrayList<Object> results = new ArrayList<Object>();
            // -- SQLiteOpenHelper dbHelper = new DatabaseHelper(this, SAMPLE_DB_NAME, null, 1);

            SQLiteDatabase myDB = this.openOrCreateDatabase(SAMPLE_DB_NAME, SQLiteDatabase.OPEN_READONLY, null);
            try { 
                 /* Create the Database (no Errors if it already exists) */
                           myDB.execSQL("PRAGMA foreign_keys = ON;");

                            // -- openOrCreateDatabase(name, mode, factory)
                            // myDB = dbHelper.getReadableDatabase();
                    Cursor c = myDB.query(DatabaseHelper.SAMPLE_TABLE_NAME, null, null, null, null, null, null);
                    Cursor d = myDB.query(DatabaseHelper.SAMPLE_TABLE_NAMES, null, null, null, null, null, null);

                    /* Check if our result was valid. */ 
                if (c != null && d != null) {

                    c.moveToFirst(); // it's very important to do this action otherwise your Cursor object did not get work
                    d.moveToFirst();
                    char cust_name = (char) c.getColumnIndex("cust_name");
                    char pro_name = (char) d.getColumnIndex("pro_name");
                    int pro_price = (int) d.getColumnIndex("pro_price");

                     /* Check if at least one Result was returned. */ 
                     if (c.isFirst() && d.isFirst()) { 
                          int i = 0; 
                          /* Loop through all Results */ 
                          do { 
                               i++; 
                               String cust_nameColumnIndex = c.getString(cust_name);
                               String pro_nameColumnIndex = c.getString(pro_name);
                               int pro_priceColumnIndex = c.getInt(pro_price);


                               /* Add current Entry to results. */ 
                               results.add("" + i + ": " + cust_name + " (" + pro_name + ": " + pro_price + ")"); 
                          } while (c.moveToNext()&& d.moveToNext());

                     } 
                }

            } catch (SQLiteException e) { 
            } finally { 
                 if (myDB != null) 
                      myDB.close(); 
            }

            // -- android.R.layout.simple_list_item_1 is object which belong to ListActivity itself
            // -- you only need to add list object in your main layout file
            this.setListAdapter(new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_1, results)); 
        }

total.xml

 <ListView
            android:id="@id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="380dp"
            android:cacheColorHint="#00000000" >
        </ListView>

the data is successfully inserted to sqlite (confirmed from adb shell)...it gives me garbage value...can any one please figure out the issue....Thanks in advance

enter image description here


Solution

  • That is not garbage values references(memory) addresses, use below code it will work.

     do { 
                                   i++; 
                                   String cust_nameColumnIndex = c.getString(cust_name);
                                   String pro_nameColumnIndex = c.getString(pro_name);
                                   int pro_priceColumnIndex = c.getInt(pro_price);
    
    
                                   /* Add current Entry to results. */ 
                                   results.add("" + i + ": " + cust_nameColumnIndex + " (" + pro_nameColumnIndex + ": " + pro_priceColumnIndex + ")"); 
                              } while (c.moveToNext()&& d.moveToNext());
    
    
    
    this.setListAdapter(new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_1, (String[]) results.toArray(new String[0])));