如何将List转换为Array Adapter?DatabaseHelper查询方法技术咨询
Here's a straightforward, step-by-step solution to turn the List<String> from your getallstatus() method into an ArrayAdapter for Android UI components:
Step 1: Retrieve the list from your DatabaseHelper
First, fetch the list by initializing your DatabaseHelper and calling the query method—do this inside your Activity or Fragment:
// In an Activity DatabaseHelper dbHelper = new DatabaseHelper(this); List<String> statusList = dbHelper.getallstatus(); // In a Fragment, use getContext() instead of 'this' // DatabaseHelper dbHelper = new DatabaseHelper(getContext());
Step 2: Create the ArrayAdapter instance
Use Android's built-in ArrayAdapter class, which works seamlessly with List<String>. You can use a predefined system layout for simple text items, or a custom layout if you need more control:
// Using Android's default single-line text layout ArrayAdapter<String> statusAdapter = new ArrayAdapter<>( this, // Context (getContext() for Fragments) android.R.layout.simple_list_item_1, // Predefined layout for plain text statusList // Your fetched List<String> ); // If you have a custom item layout (e.g., R.layout.custom_status_item) // ArrayAdapter<String> statusAdapter = new ArrayAdapter<>(this, R.layout.custom_status_item, statusList);
Step 3: Attach the adapter to your UI component
For a ListView:
ListView statusListView = findViewById(R.id.your_list_view_id); statusListView.setAdapter(statusAdapter);
For a Spinner:
Spinner statusSpinner = findViewById(R.id.your_spinner_id); statusSpinner.setAdapter(statusAdapter);
Key Note About Your getallstatus() Method
I noticed your current method adds both column 0 and column 1 to the same list for every row. This means your list will have entries like [col0_row1, col1_row1, col0_row2, col1_row2, ...]—which will display as separate items in the adapter, not one per database row.
If you want to display each row as a single logical item, modify the method to combine the two columns (or just pick one):
public List<String> getallstatus(){ List<String> list = new ArrayList<>(); String query = "select * from ref_status"; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(query,null); try{ if(cursor.moveToFirst()){ do{ // Combine columns with a separator (adjust to fit your needs) String rowItem = cursor.getString(0) + " - " + cursor.getString(1); list.add(rowItem); // Or just add one column: list.add(cursor.getString(1)); }while(cursor.moveToNext()); } cursor.close(); db.close(); }catch(Exception e){ Log.e("onins" , e.getMessage(),e); } return list; }
内容的提问来源于stack exchange,提问作者Niño Cuenco

