Простой проект ListView аварийно завершает работу, но ошибки не отображаются

Нет никаких ошибок в консоли сообщений при запуске проекта, но он продолжает сбой. Я не мог определить причину. Я попытался пройти через некоторые из подобных вопросов и реализовал данные решения, но это все еще не помогло мне. Вот мой код.

package com.example.omar.quakereport;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class EarthquakeActivity extends AppCompatActivity {
    ListView earthquakeListView;
    ArrayList<String> earthquakes;
    ArrayAdapter<String> adapter;

//    public static final String LOG_TAG = EarthquakeActivity.class.getName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.earthquake_activity);

        // Create a fake list of earthquake locations.
        earthquakes = new ArrayList<>();
        earthquakes.add("San Francisco");
        earthquakes.add("London");
        earthquakes.add("Tokyo");
        earthquakes.add("Mexico City");
        earthquakes.add("Moscow");
        earthquakes.add("Rio de Janeiro");
        earthquakes.add("Paris");

        // Find a reference to the {@link ListView} in the layout
        earthquakeListView = (ListView) findViewById(R.id.list);

        // Create a new {@link ArrayAdapter} of earthquakes
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, earthquakes);

        // Set the adapter on the {@link ListView}
        // so the list can be populated in the user interface
        earthquakeListView.setAdapter(adapter);
    }
}

Это класс, в котором живут мои геттеры:

package com.example.omar.quakereport;

public class Earthquakes {
    private String mMagnitude;
    private String mLocation;
    private String mDate;

    public Earthquakes(String magnitude, String location, String date){
        mMagnitude = magnitude;
        mLocation = location;
        mDate = date;
    }

    public String getMagnitude(){
        return mMagnitude;
    }

    public String getLocation(){
        return mLocation;
    }

    public String getDate(){
        return mDate;
    }

Это мой xml действия:

<?xml version="1.0" encoding="utf-8"?>
<ListView 
    android_id="@+id/list"
    android_orientation="vertical"
    android_layout_width="match_parent"
    android_layout_height="match_parent"/>

И это мой элемент списка xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    android_orientation="vertical" android_layout_width="match_parent"
    android_layout_height="match_parent">

</LinearLayout>
Метки

1 ответ

  1. ListViews не имеют атрибута ориентации.

    Вы должны обернуть ListView в относительный / линейный / фрейм-макет

    Затем вам нужно использовать ArrayAdapter<Earthquake> adapter;(см. здесь) (и сделать ваше имя класса сингулярным). Кроме того, необходимо реализовать toString()класс Earthquake, так как ArrayAdapter<String>он используется для отображения данных.

    И, затем отредактируйте макет элемента, чтобы добавить TextViews для отображения и данных землетрясения, и, наконец, используйте макет xml элемента землетрясения, а не android.R.layout.simple_list_item_1

    После того, как у вас есть этот адаптер, вы можете фактически сделать это, чтобы добавить и отобразить данные

    adapter.add(new Earthquake("magnitude", "location", "date"));