Pour commencer, cet ensemble de codes ne fonctionnent pas :)Comment Peupler RadioGroup et ListView de base de données Android Studio est
Activité XML //list_data.xml
<ListView
android:id="@+id/ListView"
android:layout_width="368dp"
android:layout_height="200dp"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="8dp" />
<RadioGroup
android:id="@+id/RadioGroup"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" >
</RadioGroup>
Database Helper dbHelper.java
package com.example.excgen.taxi;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Excgen on 9/25/2017.
*/
public class dbHelper extends SQLiteOpenHelper {
private static final String TAG = "databaseHelper";
private static final String TABLE_NAME = "units";
private static final String COL1 = "id";
private static final String COL2 = "plate";
public dbHelper(Context context){
super(context, TABLE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE "+TABLE_NAME+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, "+COL2+" TEXT)";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP IF TABLE EXISTS "+TABLE_NAME);
onCreate(db);
}
public boolean addData(String item){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, item);
Log.d(TAG,"addData: Adding "+item+" to "+TABLE_NAME);
long result = db.insert(TABLE_NAME,null,contentValues);
if(result == -1){
return false;
}else{
return true;
}
}
public Cursor getData(){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM "+ TABLE_NAME;
Cursor data = db.rawQuery(query,null);
return data;
}
}
classe Activité listData.java
package com.example.excgen.taxi;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import java.util.ArrayList;
public class listData extends AppCompatActivity {
public static String TAG = "listDataActivity";
dbHelper mdbHelper;
private ListView mlistView;
private RadioGroup mRadioGroup;
private RadioButton mRadioButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_data);
mlistView = (ListView) findViewById(R.id.ListView);
mdbHelper = new dbHelper(this);
populateListView();
populateRadioGroup();
}
private void populateListView(){
Log.d(TAG,"Populate List View; Displaying Data in the List View");
Cursor data = mdbHelper.getData();
ArrayList<String> dataList = new ArrayList<>();
while(data.moveToNext()){
dataList.add(data.getString(1));
}
ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,dataList);
mlistView.setAdapter(adapter);
}
private void populateRadioGroup(){
Cursor data = mdbHelper.getData();
ArrayList<String> dataList = new ArrayList<>();
while(data.moveToNext()){
dataList.add(data.getString(1));
}
for (int i = 0; i < dataList.size()-1; i++) {
mRadioGroup = (RadioGroup) findViewById(R.id.RadioGroup);
mRadioButton = new RadioButton(this);
mRadioButton.setId(i);
mRadioButton.setText(dataList.get(i));
mRadioGroup.addView(mRadioButton);
}
}
}
Résumé: valeurs de base de données à arraylist puis listView ou RadioGroup Notez que cet ensemble n'a pas pu obtenir le "id" réel de l'ID de colonne de la table de données. Pour obtenir l'ID réel, utilisez data.getString (0) car data.getString (1) obtient des valeurs de la deuxième colonne
Maintenant la vraie question est, est-ce que cela a une façon plus simple? : D