android - 如何将部分分隔符/分隔符添加到 ListView?

标签 android android-layout android-listview android-adapter separator

我目前正在为我的应用程序制作一个菜单,使用 DrawerLayout 和 ArrayAdapter 子类来实现类似于 Facebook 抽屉菜单的功能。

我目前在创建列表时没有问题,但现在看起来不错,我想在不同类型的选项(即与用户相关和与应用程序相关的选项)之间添加分隔符,并在列表顶部添加一个搜索栏菜单。

我当前的 ArrayAdaptor 子类的代码如下:

public class DrawerMenuAdapter extends ArrayAdapter<String>{
    private Context context;
    private String[] values;
    private int resId;

    public DrawerMenuAdapter(Context context, int textViewResourceId, String[] values) {
        super(context, textViewResourceId, values);
        this.context = context;
        this.values = values;
        this.resId = textViewResourceId;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(this.resId, parent, false);

        TextView elementText = (TextView)rowView.findViewById(R.id.element_text);
        ImageView elementImage = (ImageView)rowView.findViewById(R.id.element_icon);
        String textValue = values[position];

        elementText.setText(textValue);

        //This switch adds the icons to the related elements
        switch (position){
            case 0:
                elementImage.setImageResource(R.drawable.search);
                break;
            case 1:
                elementImage.setImageResource(R.drawable.facebook_friends);
                break;
            case 2:
                elementImage.setImageResource(R.drawable.flirts_history);
                break;
            case 3:
                elementImage.setImageResource(R.drawable.premium);
                break;
            case 4:
                elementImage.setImageResource(R.drawable.settings);
                break;
            case 5:
                elementImage.setImageResource(R.drawable.share_app);
                break;
            case 6:
                elementImage.setImageResource(R.drawable.cgu);
                break;
        }


        return rowView;
    }
}

我假设我必须通过调用 getView 函数来覆盖填充 ListView 的函数,但我找不到它是哪个函数。

最佳答案

如果您想要简单的 ListView 中的部分,请查看本教程:

http://cyrilmottier.com/2011/07/05/listview-tips-tricks-2-section-your-listview/

或本教程:

http://bartinger.at/listview-with-sectionsseparators/

第二个没有那么详细,但可能更容易理解/保持简单。

基本思想是您让您的 ListAdapter 具有不同类型的 View 。 例如,两个不同的 View ,其中一种是显示信息的实际列表项,另一种 View 是部分分隔符。

来自教程:

ListViews,更具体地说是适配器可以处理多种类型的 View 。如果你看一下 Adapter 接口(interface),你会发现它包含两个特定的方法:

  • getViewTypeCount() 返回你的 View 类型的数量 AdapterView 管理。大多数情况下,此方法返回 1,因为 ListView 的所有项目都是相似的。在这种情况下,通过返回 2, ListView 将处理两种类型的 View :常规项目 View 和分隔 View
  • getItemViewType(int) 必须返回 介于 0(含)和 getViewTypeCount()(独家)。给定的数字表示类型 给定位置的 View 。例如,我们可以确保 返回值为 0 用于常规项目 Views 和 1 用于 分隔符

关于android - 如何将部分分隔符/分隔符添加到 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302494/

相关文章:

android - 在 android 中完全自定义标签

Android Realm 加密示例

android - android中linearlayout中scrollview listview如何解决

android - 删除对话框列表底部的空格

java - 从 Java 中的列表数组填充字符串数组

android - 在android中制作时间轴

Android:对文本后的图像使用 alignBaseline

android - 卸载时获取包(应用程序)版本名称

java - 修改android中的html文件

android - 屏幕卡住 - ScrollView android中的 ListView