初学者android程序员,
在我的主要活动课程中,我已将内容视图设为Home_Screen
。在这个Home_Screen
xml文件中 - 我有一个ListView。为了描述这个列表视图的行,我创建了另一个名为row_layout
的自定义xml文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:gravity="left|center_vertical"
android:layout_alignParentLeft="true"
android:src="@drawable/ic_launcher" >
</ImageView>
<CheckedTextView
android:id="@+id/checkedTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_toRightOf="@+id/icon"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingLeft="6dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:clickable="true"
android:focusable="true"
android:textColor="@color/darkish_blue" >
</CheckedTextView>
</RelativeLayout>
问题是,我需要android到findviewbyid
CheckedTextView,因为它包含我需要使用的复选框,但它给了我一个nullpointer异常。
CheckedTextView chkBox = (CheckedTextView) findViewById(R.id.checkedTextView);
chkBox.setOnClickListener(new View.OnClickListener() {//<===== null pointer here!!
public void onClick(View v)
{
((CheckedTextView) v).toggle();
}
});
我在想我可以将row_layout
文件合并到home_screen
的列表视图中,但是我不确定如何...
任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
您需要使用适配器来驱动列表中的内容,这可能是内置于Android中的内容,或者您可以创建自己的内容。通常,如果您使用除游标之外的任何自定义视图作为数据源,那么最好编写自己的适配器(继承BaseAdapter是一个好的开始)。
在适配器中有getView()方法,它为列表中的每个项创建视图,使用像@bclymer这样的人发布将允许您实现自定义视图和处理事件等。
我建议您查看文档:{{3}}
答案 1 :(得分:0)
在找到视图之前,首先需要对行布局的布局进行膨胀。尝试像
这样的东西View view = getLayoutInflator().inflate(R.layout.row_layout, null);
ChecedkTextView chkBox = (CheckeTextView) view.findViewById(R.id.checkedTextView);
在没有ID为R.id.checkedTextView的视图实例之前,您的代码无效。
答案 2 :(得分:0)
您需要为新视图充气
LayoutInflater myInflater = LayoutInflater.from(yourcontext);
RelativeLayout TheLayout = (RelativeLayout) myInflater.inflate(R.layout.row_layout, null);
然后你可以得到视图
CheckedTextView chkBox = (CheckedTextView) TheLayout.findViewById(R.id.checkedTextView);
那就行了。