我在扩展 AppCompatActivity 时尝试填充自定义 ListView 时遇到问题。当我扩展 ListActivity 时,ListView 没有问题地填充。但我需要扩展除 ListActivity 之外的其他 Activity 。当我运行这段代码时,错误是:
java.lang.RuntimeException: 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
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.ViewGroup.getPaddingLeft()' on a null object reference at net.package.twitter.main.onCreate(main.java:16)
这是我的主类:
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>
如果有人能告诉我为什么会出现这个错误,那就太好了,谢谢!
最佳答案
放
super.onCreate(savedInstanceState);
就在
之前setContentView(R.layout.custom_list_view);
关于java - 扩展 AppCompatActivity 时,Android ListView 不会填充并抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833124/