我目前正在为我的应用程序制作一个菜单,使用 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/
或本教程:
第二个没有那么详细,但可能更容易理解/保持简单。
基本思想是您让您的 ListAdapter 具有不同类型的 View 。 例如,两个不同的 View ,其中一种是显示信息的实际列表项,另一种 View 是部分分隔符。
来自教程:
ListViews,更具体地说是适配器可以处理多种类型的 View 。如果你看一下 Adapter 接口(interface),你会发现它包含两个特定的方法:
getViewTypeCount()
返回你的 View 类型的数量 AdapterView 管理。大多数情况下,此方法返回 1,因为 ListView 的所有项目都是相似的。在这种情况下,通过返回 2, ListView 将处理两种类型的 View :常规项目 View 和分隔 ViewgetItemViewType(int)
必须返回 介于 0(含)和getViewTypeCount()
(独家)。给定的数字表示类型 给定位置的 View 。例如,我们可以确保 返回值为 0 用于常规项目 Views 和 1 用于 分隔符
关于android - 如何将部分分隔符/分隔符添加到 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302494/