- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Android 的 addHeaderView() 能否用于在单个 ListView 中添加多个标题?有人可以举例说明如何执行此操作吗?
我能够通过操纵 IconicAdapter 类来完成我想要的事情……我有什么理由不应该这样做吗?我觉得这可以修改为更高级的实现。就我而言,我知道我将有两个部分,每个部分有一个标题 + 2 行。
class IconicAdapter extends ArrayAdapter<String> {
IconicAdapter() {
super(ContactTabProfileResource.this, R.layout.row_iconic, mArrayList);
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = null;
if(position == 1 || position == 5) { // phone
row = inflater.inflate(R.layout.row_iconic, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(mArrayList.get(position));
ImageView icon = (ImageView)row.findViewById(R.id.rowicon);
icon.setImageResource(R.drawable.icon_phone);
} else if (position == 2 || position == 6) { // email
row = inflater.inflate(R.layout.row_iconic, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(mArrayList.get(position));
ImageView icon = (ImageView)row.findViewById(R.id.rowicon);
icon.setImageResource(R.drawable.icon_email);
} else if (position == 0 || position == 4) { // section header
row = inflater.inflate(R.layout.row_header, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(mArrayList.get(position));
label.setBackgroundColor(Color.GRAY);
} else if (position == 3) { // section divider
row = inflater.inflate(R.layout.row_header, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(" ");
}
return(row);
}
}
然后我创建了两个不同的 XML 布局。 row_header.xml 用于标题行,row_iconic.xml 用于非标题行,其中包含一个图标。
row_header.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right"
>
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:paddingLeft="10px"
android:gravity="left"
android:textStyle="bold"
/>
</LinearLayout>
行图标.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right"
>
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:paddingLeft="44px"
/>
<ImageView
android:id="@+id/rowicon"
android:layout_width="40dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:layout_height="30dp"
android:src="@drawable/icon"
/>
</LinearLayout>
最佳答案
Android 开发人员可能会调用列表分隔符或副标题(“页眉”和“页脚”仅位于列表的顶部或底部)。你如何做到这一点的要点是使用一个 ListAdapter,它包装了其他 ListAdapter 并且足够聪明,可以返回特定行的标题 View 类型并跟踪偏移量,或者将这些分隔符 View 包装在它们自己的迷你适配器中。
看看马克墨菲的 SectionedListAdapter , GPL,采用第一种方法(基于 Jeff Sharkey 的代码),或他的 MergeAdapter ,并查看 this SO question .
这与 iPhone 上智能列表子标题的优雅处理相差甚远,但使用 MergeAdapter 相当简单,而且一旦您完全了解适配器内部发生的事情就非常灵活。
关于android - 如何使用 addHeaderView() 在单个 ListView 中添加多个标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3730358/
我正在使用 mList.addHeaderView(mHeader, null, false); 在 Android 中,向我的列表添加一个(不可选择的)标题。呈现列表时,标题不可选择,但标题底部和第
我有一个 RelativeLayouts,我想将其作为标题添加到 ExpandableList。基本上,布局与我用于列表中 subview 的布局相同。 布局如下:
我正在使用以下布局 (header.xml) 在 ListView 中添加标题, 另一方面,我正在使用, View header = (View) getLayoutInflater().in
我正在寻找与 addHeaderView 等效的回收器 View 。基本上我想将带有 2 个按钮的图像作为标题添加到 ListView 中。有没有其他方法可以将标题 View 添加到回收站 View
下面是一个带有 ListView 的代码 fragment 。我添加了一个emptyView 和一个headerView。添加 headerView 会导致 onItemClick 中的位置增加一。
我正在膨胀 View 并将其添加到 ListView 以将其用作 ListView 中顶部元素的填充。问题是 View 不会在 ListView 中呈现,除非我将 View 更改为例如 TextVie
当我尝试在我的 ListFragment 的列表上添加 header 时遇到问题。我听说我必须在 setListAdapter 之前添加 header View (我遵循了这个主题 Best plac
我正在寻找与 addHeaderView 等效的回收站 View 。基本上我希望将带有 2 个按钮的图像作为标题添加到 ListView 。是否有不同的方法可以将标题 View 添加到回收站 View
Android 的 addHeaderView() 能否用于在单个 ListView 中添加多个标题?有人可以举例说明如何执行此操作吗? 我能够通过操纵 IconicAdapter 类来完成我想要的事
我有一个相当复杂的布局(包含RelativeLayouts、TextViews 和ImageViews),我想将它放在 ListView 上方。此 View 应与 ListView 一起滚动。 我尝试
我正在使用 Commonsware 的 EndlessAdapter。当我添加了一个 header View 时,我得到了我的 listView,我得到了这个错误和 LogCat: 04-22 17:
我想知道为什么下面的代码不能正常工作。 @Override public void onUpdateView(View view, int position, NewsItemNormal dat
我的目标很简单。我想将“红色矩形”作为 headerview 添加到 ListView。所以我创建了一个简单的 Activity public class MainActivity extends A
是否有一个 XML 标记,我可以在布局文件中使用它等同于 ListView.addHeaderView() ? 最佳答案 我按照您的要求编写了一个简单的 ListView。 在 value 文件夹的
我尝试在我的新应用程序中使用 StaggeredGridView。一切正常。现在我想添加一个 HeaderView 和一个 FooterView,但这给了我以下错误: java.lang.Illega
尝试将 addHeaderView() 和 addFooterView() 用于 ListView。如果我尝试使用我在 XML 中为页眉或页脚预定义的 View ,我会得到一个空指针异常。但是,如果我
我是一名优秀的程序员,十分优秀!