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);
}
Другие вопросы по тегам