Android ListView не работает
Я новичок в разработке Android, и я только что узнал о представлениях списков и адаптеров массивов и т. д. У меня есть проект в Android Studio, который имеет несколько действий, и в одном у меня есть адаптер массива и представление списка, но каждый раз, когда я запускаю приложение и переключитесь на действие, в котором есть представление списка, приложение не отвечает и закрывается. Я проверил код, и он такой же, как код в нескольких уроках, которые я видел. Я думаю, что это как-то связано с тем, что я делаю, может кто-нибудь мне помочь?
public class StoreActivity extends ActionBarActivity {
String[] storeList = {"Ship 1", "Ship 2", "Ship 3"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store);
ListView store;
store = (ListView) findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter(this, R.layout.row_layout, storeList);
store.setAdapter(adapter);
}
2 ответа
Изменить эту строку
ArrayAdapter<String> adapter = new ArrayAdapter(this, R.layout.row_layout, storeList);
к этому:
ArrayAdapter<String> adapter = new ArrayAdapter(this, R.layout.row_layout, R.id.TextViewofRow_layoutstoreList, storeList);
Вы должны сказать, в какое текстовое представление вы поместите свои данные.
Если вы используете ArrayAdapter, это правильный способ его инициализации:
ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, storeList);
например:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store);
ListView store;
store = (ListView) findViewById(R.id.list);
//ArrayAdapter<String> adapter = new ArrayAdapter(this, R.layout.row_layout, storeList);
ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, storeList);
store.setAdapter(adapter);
}
но это означает, что вы хотите загрузить данные в свой собственный макет строки (row_layout.xml
), добавьте идентификатор textView (я думаю, это то, что вам нужно):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store);
ListView store;
store = (ListView) findViewById(R.id.list);
//ArrayAdapter<String> adapter = new ArrayAdapter(this, R.layout.row_layout, storeList);
ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.row_layout, R.id.myTextView, storeList);
store.setAdapter(adapter);
}