【问题标题】:Android ListView won't populate and throws error when extending AppCompatActivity扩展 AppCompatActivity 时,Android ListView 不会填充并引发错误
【发布时间】:2016-01-17 07:34:35
【问题描述】:

我在扩展 AppCompatActivity 时尝试填充自定义 ListView 时遇到问题。当我扩展 ListActivity 时,ListView 填充没有问题。但我需要扩展 ListActivity 以外的其他活动。当我运行这段代码时,错误是:

java.lang.RuntimeException:无法启动活动 ComponentInfo{net.package.twitter/net.package.twitter.main}:java.lang.NullPointerException:尝试调用虚拟方法'int android.view.ViewGroup.getPaddingLeft ()' 在空对象引用上

原因:java.lang.NullPointerException:尝试在 net.package.twitter.main.onCreate(main.java:16) 的空对象引用上调用虚拟方法“int android.view.ViewGroup.getPaddingLeft()” )

这是我的主要课程:

package net.package.twitter;

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

import java.util.ArrayList;
import java.util.HashMap;

public class main extends AppCompatActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.custom_list_view);
ArrayList<HashMap<String, String>> list = (ArrayList<HashMap<String, String>>) getIntent().getSerializableExtra("Twitter");
    ListView ls = (ListView)findViewById(R.id.list);
    super.onCreate(savedInstanceState);

    System.out.println(list.toString());
    final SimpleAdapter adapter = new SimpleAdapter(
            this,
            list,
            R.layout.custom_row_view,
            new String[]{"user", "time", "text", "screen_name"},
            new int[]{R.id.text1, R.id.text2, R.id.text3, R.id.text4}
    );
    ls.setAdapter(adapter);
}

}

这里是activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="net.package.twitter.main">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

<ListView android:id="@+id/list"
    android:layout_width="383dp"
    android:layout_height="380dp"
    android:background="#FFFFFF"
    android:drawSelectorOnTop="false">
</ListView>
</RelativeLayout>

这里是custom_row_view.xml(ListView每个条目的自定义控件):

<?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">

<TextView android:id="@+id/text1"
    android:textSize="16sp"
    android:textStyle="bold"
    android:textColor="#000000"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/> <!--Tweet Account-->
<TextView android:id="@+id/text4"
    android:typeface="serif"
    android:textSize="12sp"
    android:textStyle="bold"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/> <!--Tweet @ name-->
<!--Tweet Time-->
<TextView android:id="@+id/text3"
    android:typeface="sans"
    android:textSize="15sp"
    android:textStyle="italic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

<TextView android:id="@+id/text2"
    android:textSize="12sp"
    android:textStyle="bold"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"/>
<!--Tweet Contect-->

</LinearLayout>

如果有人能告诉我为什么这会给我这个错误,那就太好了,谢谢!

【问题讨论】:

  • 尝试 setContentView(R.layout.custom_list_view);在你找到你的列表视图之前 ListView ls = (ListView)findViewById(R.id.list);
  • 我现在遇到了一个新错误@JRowan,Unable to start activity ComponentInfo{net.package.twitter/net.package.twitter.main}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.ViewGroup.getPaddingLeft()' on a null object reference
  • 您能否将整个错误作为编辑发布到您的帖子中,以及它所指的代码行
  • 是的,刚刚更新。 @JRowan
  • 尝试把 super.onCreate(savedInstanceState);就在 setContentView(R.layout.custom_list_view); 之前

标签: java android listview


【解决方案1】:

super.onCreate(savedInstanceState); 

就在

之前
setContentView(R.layout.custom_list_view); 

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多