在这里读了一些类似的问题之后,我仍然被迫在这里发表我的问题。
我有一个Activity应该添加并显示相对于我的SQLite数据库中的游戏数量的一定数量的按钮。此活动必须可滚动。
所以我有我的基本layout-xml文件:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp" >
<RelativeLayout
android:id="@+id/rel_all_football"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
style="@style/TextHeader"
android:id="@+id/tv_all_football_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/all_games"
/>
<View
android:id="@+id/v_cond_line1"
android:layout_below="@+id/tv_all_football_header"
android:layout_height="1dp"
android:layout_width="fill_parent"
android:layout_marginBottom="10dp"
android:background="#FFFFFF"
/>
</RelativeLayout>
</ScrollView>
现在,对于数据库中的每个条目,我想在Button
(标题)和RelativeLayout
下的TextView
添加View
的特定信息(简单的线)。
所以在看完这里的一些问题后,我尝试了这样的事情:
RelativeLayout layout = (RelativeLayout) findViewById(R.id.rel_all_football);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Button button;
for(int i=0; i<3; i++){
button = new Button(this);
button.setLayoutParams(
new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
button.setText("Hello " + i);
layout.addView(button);
}
这导致NullPointerException
layout.addView(button)
。说实话,这是我第一次尝试从代码中添加内容而不是直接在xml中添加内容,所以我不知道如果我这样做是正确的。我知道View
必须至少声明属性layout_width
和layout_height
,所以这里有什么问题?我膨胀错了吗?或者我在创建Button
?
答案 0 :(得分:1)
我认为你正面临着id的问题,试试这个
ScrollView scrollView = (ScrollView)getLayoutInflater().inflat(R.layout.filename)
RelativeLayout layout = (RelativeLayout) scrollView.findViewById(R.id.rel_all_football);
Button button;
for(int i=0; i<3; i++){
button = new Button(this);
button.setLayoutParams( new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
button.setText("Hello " + i);
layout.addView(button);
}
setContentView(scrollView);