2013-07-15 2 views
2

Я новичок в Android и Java, и я столкнулся с этой проблемой, и я ищу ответ, но я ничего не нашел.Конструктор ArrayAdapter <String> (AddNewUnit, int, String) не определен

Я пытаюсь получить некоторые данные из базы данных и поместить его в блесны, но я столкнулся с этой проблемой:

Конструктор 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.

Есть ли способ сделать это, или я должен использовать пользовательские ArrayAdapter ?

+0

Вы попробуете просто передать String []. Я имею в виду, что ваша проблема может быть в книгах [1] []; Будете ли вы просто создавать константу массива и проходить и видеть, как это работает, или нет. –

+0

подходит, чтобы проверить ваш запрос БД .. получение данных или нет :) – QuokMoon

ответ

-1

Вы установили тип T, чтобы быть строкой, а затем вы пройти множество объектов типа книги, вы должны изменить строку в «ваш класс данных»

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. –

+0

Извините, форматирование из богатого материала удалило текст между "<>" –

0

я думаю, вы должны использовать custom adapter для Books[1][], потому что его многомерность! поэтому используйте custom Adapter и переопределениеgetView()

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 

Используйте пользовательский Listview с пользовательским адаптером вместе с держателем вида.

Override getCount и getView

How to Display two dimensional Array in ListView?

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; 
.... 
     } 
}.... 

Override getCount() и getView().

Смежные вопросы