我已经按照Android面试教程创建了一个自定义ListView。这是链接: http://www.androidinterview.com/android-custom-listview-with-image-and-text-using-arrayadapter/
我想将一个切换小部件添加到ListView的第一行。怎么能只在1行或某些特定行上进行,如第1,第4,第7,第16等?
答案 0 :(得分:2)
如果您不熟悉listViews,那么简单的答案就是:
在您的基本布局中放置一个开关。布局文件是xml文件,其id为R.layout.mylist,在您链接的示例中。
为每个不位于0的位置隐藏开关,否则显示。由于视图回收,您无法依赖默认设置,因此您必须隐藏或显示。
更高级的答案是:
使用基本适配器,因为它具有方法getViewType和getViewTypeCount(数组适配器不具有)。您必须编写数组和视图元素之间的关系,如果您不熟悉listViews / adapters,那么这可能太令人生畏了。
创建两个布局(xml文件),一个带开关。
覆盖getViewType和getViewTypecount。
现在有两种视图类型,因此getViewTypeCount应返回2,并且getViewType应为每个非位置0的位置返回0,并为其余位置返回1.
这样做的好处是适配器只会将正确的视图类型传递给适配器,因此每次调用getView时都不必隐藏/取消隐藏开关。 Android只制作一个有开关的布局。因此,它更有效率。
答案 1 :(得分:0)
您可以将另一个参数发送到listview的适配器,并在适配器中生成条件
if(parameter == 1)
{Show Switch}
答案 2 :(得分:0)
我已经修改了我的布局以将开关小部件添加到所有行,然后我为每行中的每个开关设置了可见性为“GONE”,除了第一行。
public View getView(int position,View view,ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.mylist, null,true);
Switch mSwitch = (Switch) rowView.findViewById(R.id.switch1);
if(position != 0) {
mSwitch.setVisibility(View.GONE);
}
return rowView;
};