【问题标题】:Add a space between certain rows in a listview在列表视图中的某些行之间添加空格
【发布时间】:2014-10-21 11:55:30
【问题描述】:

我有一个列表视图,它的每一行都由几个文本组成。其中一个是组名,当它与以前的不同时,我会显示该组名。同时,我想创建一个空间来分隔类别以获得最佳外观。所以我在我的 baseAdapter 的 getView 方法中添加了一个填充,如 ** ** 之间所示:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {

    convertView = LayoutInflater.from(context).inflate(
        R.layout.ir_item, parent, false);
}

TextView group = ViewHolder.get(convertView, R.id.data1);
TextView range = ViewHolder.get(convertView, R.id.data2);
TextView assignment = ViewHolder.get(convertView, R.id.data3);
LinearLayout linear = ViewHolder.get(convertView, R.id.line); //it's the linearlayout parent of rows

HashMap<String, String> item = getItem(position);
if (position > 0) {
    if (item.get(GROUP).equals(getItem(position - 1).get(GROUP))) {
    group.setText("");
    } else {
    **linear.setPadding(0, 10, 0, 0);**
    group.setText(item.get(GROUP));
    }
} else {
    group.setText(item.get(GROUP));
}
range.setText(item.get(RANGE) + " (" + item.get(INTENSITY) + ")");
assignment.setText(item.get(ASSIGNMENT));

return convertView;
}}

它适用于第一页,但是当我滚动列表时,或者我回来时......在所有行上都创建了填充,并且我失去了空间效果。然而,组名并没有写在任何地方,尽管代码行出现在相同的条件下。

我找不到问题出在哪里,你能帮帮我吗?

非常感谢。

【问题讨论】:

    标签: android listview row adapter space


    【解决方案1】:

    适配器支持多种视图类型。

    http://developer.android.com/reference/android/widget/Adapter.html

    实现 getItemViewType & getViewTypeCount 然后在 getView 调用 getItemViewType 并根据响应创建正确的视图。

    这是一个使用该功能为每行赋予不同颜色的示例: https://github.com/codepath/android_guides/wiki/Implementing-a-Heterogenous-ListView

    【讨论】:

    • 谢谢,我按照你的例子和另一个例子,现在完美了
    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    相关资源
    最近更新 更多