2

我是 android 和 Java 的新手,我遇到了这个问题,我正在寻找答案,但我什么也没找到。

我正在尝试从数据库中获取一些数据并将其放入微调器中,但我遇到了这个问题:

构造函数 ArrayAdapter(AddNewUnit, int, String) 未定义

这是我的代码:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;

public class AddNewUnit extends Activity implements OnItemSelectedListener {

EditText UnitName;
Spinner BookName;
DataBase dataBase;
String[][] Books;
String BookId;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_new_unit);
    UnitName = (EditText) findViewById(R.id.ANU_EtUnitName);
    BookName = (Spinner) findViewById(R.id.ANU_SBookName);
    dataBase.open();
    Books = dataBase.Get_Books();
    dataBase.close();
    ArrayAdapter<String> adapter =new ArrayAdapter<String>(AddNewUnit.this, android.R.layout.simple_spinner_item, Books[1][]);
    BookName.setAdapter(adapter);
    BookName.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub
    BookId=Books[0][BookName.getSelectedItemPosition()];
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}


}

我的问题是这条线

ArrayAdapter<String> adapter =new ArrayAdapter<String>(AddNewUnit.this, android.R.layout.simple_spinner_item, Books[1][]);

我搜索并发现大多数错误都与他们写作时的上下文有关,this但我写AddNewUnit.this的是我的活动。

我做错了什么?


更多细节:

对不起,这是我第一次使用 java,我之前使用过 c++,在 c++ 中我Books[1][]用来将数组从多维转换为单维,它只是从数组中获取第 1 行。

这个字符串有两行,一行用于书 ID,另一行用于书名,我只想传递第 1 行的书名。

有没有办法做到这一点,或者我必须使用 custom ArrayAdapter

4

4 回答 4

1

使用的构造函数未定义。

public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

在 API 级别 1 中添加

构造函数

参数

context The current context.

resource    The resource ID for a layout file containing a layout to use when instantiating views.

textViewResourceId  The id of the TextView within the layout resource to be populated

objects The objects to represent in the ListView.

http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter(android.content.Context , int, T[])

你有这个

 ArrayAdapter<String> adapter =new ArrayAdapter<String>(AddNewUnit.this, android.R.layout.simple_spinner_item, Books[1][]);  // params wrong

使用带有自定义适配器的自定义列表视图以及视图持有者。

覆盖getCountgetView

如何在 ListView 中显示二维数组?

于 2013-07-15T04:40:00.780 回答
0
ArrayAdapter<String> adapter =new ArrayAdapter<String>(AddNewUnit.this, android.R.layout.simple_spinner_item, Books[1][]);

ArrayAdapter没有任何接收二维数组的构造函数。尝试扩展BaseAdapter并创建您自己的自定义适配器。

public class YourCustomAdapter extends BaseAdapter{

String[][] your2Darray;

//Here's your constructor
public YourCustomAdapter(Context c,int layoutId,int resourceId, String[][] you2Darray){
        this.your2Darray=your2Darray;
....
      }
}....

覆盖getCount()getView()

于 2013-07-15T05:00:57.443 回答
0

我想你将不得不使用它custom adapterBooks[1][]因为它是多维的!所以使用custom Adapter覆盖 getView()

于 2013-07-15T04:27:58.343 回答
-1

您已将 T 类型设置为字符串,然后传递一组 Book 类型对象,您需要将字符串更改为“您的数据类”

于 2013-07-15T04:26:25.800 回答