Android 我有一个帐户名列表和一个微调器,如何用列表填充微调器?

Android 我有一个帐户名列表和一个微调器,如何用列表填充微调器?,android,list,spinner,Android,List,Spinner,我正在努力处理Android列表以及如何将它们转换为在微调器中使用。将字符串数组放入微调器非常简单,因此,我认为对列表执行同样的操作也很简单。不过,目前我还不知道如何将列表转换为与微调器的ArrayAdapter一起使用的正确格式 以下是我从数据库中获取帐户名列表的代码: //---retrieves all the accounts matching the account_type--- public List getAccounts(String account_type) {

我正在努力处理Android列表以及如何将它们转换为在微调器中使用。将字符串数组放入微调器非常简单,因此,我认为对列表执行同样的操作也很简单。不过,目前我还不知道如何将列表转换为与微调器的ArrayAdapter一起使用的正确格式

以下是我从数据库中获取帐户名列表的代码:

//---retrieves all the accounts matching the account_type---
    public List getAccounts(String account_type) {      
        List<String> list = new ArrayList<String>();
        Cursor cursor = this.db.query(DBACCOUNTS, new String[] {
                ID,
                ACCOUNTTYPE,
                ACCOUNTNUMBER,
                ACCOUNTNAME},
                ACCOUNTTYPE + " = " + "'" + account_type + "'",
                null, 
                null, 
                null, 
                null, 
                null);
        if (cursor.moveToFirst()) {
           do {
              //---account_name column number is 3--- 
              list.add(cursor.getString(3));
           } while (cursor.moveToNext());
        }
        if (cursor != null && !cursor.isClosed()) {
           cursor.close();
        }

        return list;
    }
/---检索与帐户类型匹配的所有帐户---
公共列表getAccounts(字符串帐户类型){
列表=新的ArrayList();
Cursor Cursor=this.db.query(DBACCOUNTS,新字符串[]){
身份证件
账户类型,
帐号,
ACCOUNTNAME},
ACCOUNTTYPE+“=”+“+account_type+”,
无效的
无效的
无效的
无效的
无效);
if(cursor.moveToFirst()){
做{
//---账户名称列号为3--
list.add(cursor.getString(3));
}while(cursor.moveToNext());
}
if(cursor!=null&!cursor.isClosed()){
cursor.close();
}
退货清单;
}
从返回的“列表”中,我需要做什么来填充微调器?下面的代码显然是针对字符串数组的,但是,我不知道需要做什么才能使列表使用类似的功能。这是我的非工作数组适配器代码(帐户名称数组设置为从上面返回的“列表”):

account\u name\u微调器=(微调器)findViewById(R.id.account\u name\u微调器);
account\u name\u adapter=new ArrayAdapter(这是android.R.layout.simple\u微调器\u项,account\u name\u数组);
帐户\名称\适配器.setDropDownViewResource(android.R.layout.simple \微调器\下拉菜单\项);
帐户\名称\微调器.setAdapter(帐户\名称\适配器);
我知道我在这里偏离了正轨,我知道ArrayAdapter需要一个字符串数组,但是,正如我所说的,我需要朝着正确的方向努力。显然,我需要将列表转换为字符串数组,或者改变调整微调器以适应列表的方式。Android对我来说很难掌握,它有很多数据结构和更多的数据类型规则,比我在PHP背景下使用的要多得多


非常感谢您的帮助

我有一个类似的问题,我没有从一个列表变成一个微调器,我只是改变了从数据库中提取数据的方式,我编写了另一个方法,返回数据库中的行数:

public int RowCount() {
    String count = "Select COUNT(_id) from " + TABLE_NAME;
    return (int) db.compileStatement(count).simpleQueryForLong();
}
然后我声明了一个数组:

String []myArray = new String[db.RowCount()];

然后,我使用光标填充了该数组,因为您似乎已经知道如何操作。

我遇到了类似的问题,我没有从列表变成微调器,而是改变了从数据库中提取数据的方式,我编写了另一个方法,返回数据库中的行数:

public int RowCount() {
    String count = "Select COUNT(_id) from " + TABLE_NAME;
    return (int) db.compileStatement(count).simpleQueryForLong();
}
然后我声明了一个数组:

String []myArray = new String[db.RowCount()];
然后,我使用光标填充该数组,因为您似乎已经知道如何操作。

用于将列表转换为数组

List<String> list = new ArrayList<String>(); // Your list
// Populate it

// Then get an array:
String[] array = list.toArray( new String[0] );
List List=new ArrayList();//你的名单
//填充它
//然后获取一个数组:
String[]数组=list.toArray(新字符串[0]);
用于将列表转换为数组

List<String> list = new ArrayList<String>(); // Your list
// Populate it

// Then get an array:
String[] array = list.toArray( new String[0] );
List List=new ArrayList();//你的名单
//填充它
//然后获取一个数组:
String[]数组=list.toArray(新字符串[0]);

如果account\u name\u array是ArrayList,则需要将其转换为字符串[],并将其传递给适配器

String[] account_names = account_name_array.toArray(new String[account_name_array.size()]);
account_name_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, account_names);
String[]account\u names=account\u name\u array.toArray(新字符串[account\u name\u array.size());
account\u name\u adapter=new ArrayAdapter(这是android.R.layout.simple\u微调器\u项,account\u名称);

如果account\u name\u array是ArrayList,则需要将其转换为字符串[],并将其传递给适配器

String[] account_names = account_name_array.toArray(new String[account_name_array.size()]);
account_name_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, account_names);
String[]account\u names=account\u name\u array.toArray(新字符串[account\u name\u array.size());
account\u name\u adapter=new ArrayAdapter(这是android.R.layout.simple\u微调器\u项,account\u名称);

谢谢,不过我想在此时将其保留为ArrayList,以便在其上使用列表功能。谢谢,不过我想在此时将其保留为ArrayList,以便在其上使用列表功能。谢谢,简单!你能确认我理解正确吗?“新字符串[0]”是否初始化为保存.toArray函数从ArrayList转换为字符串数组所需的临时数组?是否应该计算结果的数量并以最佳方式初始化新字符串[]呢?
toArray
的参数有两个目的:第一个目的是传递要返回的数组类型。第二个(可选)用途是保存结果:如果传入的数组足够大,结果将在该数组中返回。如果不是,将创建一个新数组。谢谢,简单!你能确认我理解正确吗?“新字符串[0]”是否初始化为保存.toArray函数从ArrayList转换为字符串数组所需的临时数组?是否应该计算结果的数量并以最佳方式初始化新字符串[]呢?
toArray
的参数有两个目的:第一个目的是传递要返回的数组类型。第二个(可选)用途是保存结果:如果传入的数组足够大,结果将在该数组中返回。否则,将创建一个新数组。