我是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行。< / p>
这个字符串有两行一个用于Book ID,另一个用于Book name我只想传递Book名称,即第1行。
有没有办法做到这一点,或者我必须使用自定义ArrayAdapter
?
答案 0 :(得分: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.
你有这个
ArrayAdapter<String> adapter =new ArrayAdapter<String>(AddNewUnit.this, android.R.layout.simple_spinner_item, Books[1][]); // params wrong
将自定义列表视图与自定义适配器以及视图持有者一起使用。
覆盖getCount
和getView
答案 1 :(得分:0)
我认为你必须custom adapter
使用Books[1][]
因为它的多维度!
因此,请使用custom Adapter
和覆盖 getView()
答案 2 :(得分:0)
ArrayAdapter<String> adapter =new ArrayAdapter<String>(AddNewUnit.this, android.R.layout.simple_spinner_item, Books[1][]);
ArrayAdapter
没有任何接收2D数组的构造函数。尝试扩展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()
。
答案 3 :(得分:-1)
您已将T类型设置为字符串,然后传递Book类型对象的集合,您需要将字符串更改为&#34;您的数据类&#34;