我试图将我的指示器设置为紧挨着文本视图,但我就是找不到正确的代码来这样做。
可扩展标记语言:
<TextView
android:id="@+id/lblListHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
android:textColor="#000000"
android:textSize="17dp" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/lblListHeader"
android:src="@drawable/custom_arrow" />
这是我在研究中发现的唯一一堆代码,但我无法让它工作:
//inside getGropView method
View v;
if (convertView == null) {
v = newGroupView(isExpanded, parent);
} else {
v = convertView;
}
bindView(v, mGroupData.get(groupPosition), mGroupFrom, mGroupTo);
((ImageView) v.findViewById(R.id.videos_group_indicator))
.setImageResource(isExpanded?R.drawable.videos_chevron_expanded:R.drawable.videos_chevron_collapsed);
return v;
主要问题是它“下划线”了newGroupView方法等,因为我没有这样的方法,也没有提到如何在我正在查看的example中创建它。
另外,一旦我得到了解决方案,能不能有人试着给我解释一下这段代码?我已经读了很长时间了,我只是不能让自己理解它,我还是个初学者。
1条答案
按热度按时间fnvucqvd1#
下面是一个自定义可展开列表视图的示例:
如果在新项目中应用此代码,您希望看到的是:
将此代码创建为活动
将expandableListView添加到main.xml中
创建适配器类
方法和参数的名称提供了相当丰富的信息。方法getGroupView和getChildView分别返回p
parents
和children
的View。例如,使用方法getGroupView中的参数isExpanded,我们可以更改处于不同状态的组的背面。使用LayoutInflater,我们对列表使用自定义布局。Group_view.xml
Child_view.xml
在子视图中,我们在适配器方法getChildView中添加了一个按钮,用于控制按钮的按下。以类似的方式,我们可以在group_view.xml中添加按钮和其他元素。
此外,我们还可以将监听者固定到我们的列表中。
·OnChildClickListener-按下元素·OnGroupCollip seListener-折叠组·OnGroupExpanListener-展开组·OnGroupClickListener-按下组
现在让我们看一下groupIndicater-组状态的指示器。它在main.xml中的位置指向,并带有对应于左右边框的参数指示器Left、指示器RIGH。默认情况下,指示器放在左侧,不是很酷。
此外,我们还可以添加自定义图像,为此,我们需要在可用此代码绘制的文件夹中添加indicator.xml。
其中,ImageOpen用于展开的组ImageClose用于折叠的组
下一次,我们需要为main.xml中的列表参数添加一行