简单的ListView项目崩溃,但没有显示错误

时间:2016-10-05 20:59:04

标签: android listview android-arrayadapter

当我运行我的项目时,消息控制台中没有错误但它一直崩溃。我无法发现原因。我试图通过一些类似的问题并确实实施了给定的解决方案,但它仍然没有帮助我。这是我的代码。

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 xmlns:android="http://schemas.android.com/apk/res/android"
    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 xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

ListViews没有orientation属性。

您应该将ListView包装在相对/线性/框架布局

然后,您需要使用ArrayAdapter<Earthquake> adapter;see here)(并使您的类名称为单数)。或者,您需要在地震类上实现toString(),因为这是ArrayAdapter<String>用于显示数据的内容。

然后编辑项目布局以添加TextViews以显示和EarthQuake数据,最后使用地震项目xml布局,而不是android.R.layout.simple_list_item_1

拥有该适配器后,您实际上可以执行此操作来添加和显示数据

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