2016-04-20 18 views
0

Ich bin relativ neu zu ArrayList und ich versuche nur verschiedene ArrayList zu verwenden. Die ArrayList<xyz> ist vom Typ float. Ich verwende dies, um Werte in einer Datenbank in SQLite zu speichern. Später versuche ich die gespeicherten Werte in eine Arraylist<float> zu verschieben. Ich weiß, dass beide von verschiedenen Typen sind, aber es gibt eine Möglichkeit, eine Konvertierung zu machen. Jede Art von Hilfe wird geschätzt.Convert ArrayList <xyz> zu ArrayList <Float>

Im Folgenden ist der Code:

public class DatabaseHandler extends SQLiteOpenHelper { 


    private static final int DATABASE_VERSION = 1; 

    private static final String DATABASE_NAME = "TemperatureManager"; 

    private static final String TABLE_TEMPERATURE_READING = "Temperature"; 


    private static final String TEMPERATURE_READING = "name"; 


    public DatabaseHandler(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "create table " + TABLE_TEMPERATURE_READING + "(" 
       + TEMPERATURE_READING + " FLOAT"+")"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

    // Upgrading database 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_TEMPERATURE_READING); 

     // Create tables again 
     onCreate(db); 
    } 


    /** 
    * All CRUD(Create, Read, Update, Delete) Operations 
    */ 

    // Adding new contact 
    void addContact(Contact contact) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(TEMPERATURE_READING, contact.getName()); 


     // Inserting Row 
     db.insert(TABLE_TEMPERATURE_READING, null, values); 
     db.close(); // Closing database connection 
    } 

    // Getting single contact 
    Contact getContact(int id) { 
     SQLiteDatabase db = this.getReadableDatabase(); 

     Cursor cursor = db.query(TABLE_TEMPERATURE_READING, new String[] { 
         TEMPERATURE_READING},null, null, null, null, null); 
     if (cursor != null) 
      cursor.moveToFirst(); 

     Contact contact = new Contact(cursor.getFloat(0)); 
     // return contact 
     return contact; 
    } 

    // Getting All Contactsc 
    public ArrayList<Contact> getAllContacts() { 
     ArrayList<Contact> contactList = new ArrayList<Contact>(); 
     // Select All Query 
     String selectQuery = "SELECT * FROM " + TABLE_TEMPERATURE_READING; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 

       Contact contact = new Contact(); 
       //contact.setID(Integer.parseInt(cursor.getString(0))); 
       contact.setName(cursor.getFloat(1)); 
       //contact.setPhoneNumber(cursor.getString(2)); 
       // Adding contact to list 
       contactList.add(contact); 
      } while (cursor.moveToNext()); 
     } 

     // return contact list 
     return contactList; 
    } 



    // Getting contacts Count 
    public int getContactsCount() { 
     String countQuery = "SELECT * FROM " + TABLE_TEMPERATURE_READING; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(countQuery, null); 

     //cursor.close(); 

     // return count 
     return cursor.getCount(); 
    } 
} 
+0

Ist xyz eine Klasse? –

+0

@SumeetSingh Ja, ich weiß, es ist eine sehr triviale Frage, aber ich brauche Ratschläge. – ADI

+0

Also hat die Klasse xyz float-Variablen drin, die mit Hilfe von Konstruktoren initialisiert werden? –

Antwort

1

Fügen Sie die folgende Funktion, um Ihre Klasse xyz.

public Float floatValue() 
{ 
return this.f; 
} 

Angenommen, dass f die float-Variable der Klasse xyz ist.

Jetzt können Sie die Arraylist wie folgt füllen: Angenommen, list_of_objects ist die Arraylist von Objekten der Klasse xyz.

Arraylist<float> al=new Arraylist<float>(); 
for(xyz o: list_of_objects) 
al.add(o.floatValue()); 
+0

Es hat funktioniert .. danke – ADI

1

Sie müssen für jeden Wert über den Arraylist und iterieren, um die Transformation machen und speichern Sie es in Ihrer Arraylist. Versuchen Sie, den nächsten Code:

ArrayList<xyz> a1 = new ArrayList<xyz>(); 

//set the data in a1.... 

ArrayList<Float> a2 = new ArrayList<Float>(); 
int n = a1.size(); 

for(int i=0;i<n;i++) 
    a2.add(a1.get(i).methodXYZtoFloat()); 

Bei dem Verfahren methodXYZtoFloat (es wird eine Float zurückkehren) müssen Sie die Umwandlung von XYZ definieren zu schweben.

Hoffe es hilft!

+0

Wie definiere ich die Umwandlung. ? – ADI

+0

Nun, es hängt von Ihrer Java-Klasse ab. Wenn Sie eine Kopie des Codes (z. B. http://pastebin.com/) weitergeben können, werde ich versuchen, Ihnen so viel wie möglich zu helfen! –

Verwandte Themen