我有N
个“书籍”,每个书都有一些章节。所以我创建了一个ListView
。 ListView
中的每个项目都有两个部分:名称为TextView
,列出章节的Spinner
。
我为ListView
- BookAdapt
创建了自定义适配器,并为Spinner
- ChapAdapt
创建了自定义适配器。我有它显示和工作,但我无法找到如何添加点击/选定的事件。
这是列表资源
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Load Chapter" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:text="Load"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:text="Cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
<ListView
android:id="@+id/chapview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
以下是每本书的展示
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/viewbook"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Spinner
android:id="@+id/chapspinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/chapter_prompt"
android:layout_weight="1"/>
以下是BookAdapt
class BookAdapt extends ArrayAdapter {
BookAdapt( Context context, int txtres, BookHolder[] bks) {
super( context, txtres );
mContext = context;
books = bks;
mInflater = LayoutInflater.from(context);
}
public View getView( int pos, View convert, ViewGroup parent) {
BookHolder book = books[ pos];
String bkname = book.getName();
if (convert == null) {
convert = mInflater.inflate(R.layout.bookview, null);
book.text = (TextView) convert.findViewById(R.id.viewbook);
Spinner sp = (Spinner)convert.findViewById( R.id.chapspinner);
ChapAdapt ch = new ChapAdapt( book, mContext);
sp.setAdapter( ch);
//convert.setClickable(true);
convert.setTag( book);
} else {
book = (BookHolder)convert.getTag();
}
book.text.setText( bkname );
return convert;
}
ChapAdapt
只需指定TexTView
。
答案 0 :(得分:0)
Spinner本身实现了OnClicklistener
,因此它可以弹出并允许您选择相应的项目。选择后Spinner.onClick()
应由系统调用,所以我认为这是您正在寻找的地方。
你想要做的事情听起来很像ExpandableListView
给我的一个用例 - 也许这也许有趣。