【问题标题】:Dividers between Parent cells and not child cells of ExpandableListViewExpandableListView 的父单元格和非子单元格之间的分隔线
【发布时间】:2016-10-31 04:11:23
【问题描述】:

有几个问题可以解决这个问题,但没有一个适合我的答案。我试图在 ExpandableListView 的父单元格之间添加大约 10 dp 的空间,但不在子单元格之间添加。我几乎尝试了一切。问题是我需要父单元格在不展开时也被圆形,然后在展开时半圆形(仅顶角)。然后每组中的最后一个孩子在展开时是半圆的(相反的方式),所以每组作为一个整体就像一个圆角正方形。我已经完成了圆角,但无法在父单元格之间获得空间。

有人可以给我一个好方法吗?

我目前的尝试:

@Override
public int getGroupCount() {
    return (bunches.size()*2)-1;
}

... 在 getGroupView() 中,我根据位置设置视图...

@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        holder = new ViewHolder();
        if (groupPosition%2!=0) {
            convertView = mInflater.inflate(R.layout.fakeview, null);
        } else {
            convertView = mInflater.inflate(R.layout.header_item, null);
            convertView.setBackgroundResource(R.drawable.custom_listview_item_header_expanded);
            holder.name = (TextView) convertView.findViewById(R.id.expandable_list_title);
            holder.numberOfMembers = (TextView)convertView.findViewById(R.id.num_members_textview);
            holder.editImageView = (ImageView)convertView.findViewById(R.id.header_item_imageview_edit);
        }
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder)convertView.getTag();
    }
    if (isExpanded) {
        convertView.setBackgroundResource(R.drawable.custom_listview_item_expanded);

    } else {
        convertView.setBackgroundResource(R.drawable.custom_listview_item);
    }
...

但这会在创建单元格时抛出一个空指针:

11-21 10:00:39.542: E/AndroidRuntime(28855): FATAL EXCEPTION: main
11-21 10:00:39.542: E/AndroidRuntime(28855): Process: me.lunchbunch.stage, PID: 28855
11-21 10:00:39.542: E/AndroidRuntime(28855): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:715)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at me.lunchbunch.core.listadapter.BunchesActivityListAdapter.getGroupView(BunchesActivityListAdapter.java:125)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:446)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.AbsListView.obtainView(AbsListView.java:2347)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.ListView.makeAndAddView(ListView.java:1864)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.ListView.fillDown(ListView.java:698)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.ListView.fillFromTop(ListView.java:759)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.ListView.layoutChildren(ListView.java:1673)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.AbsListView.onLayout(AbsListView.java:2151)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.View.layout(View.java:15671)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.ViewGroup.layout(ViewGroup.java:5038)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:581)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.View.layout(View.java:15671)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.view.ViewGroup.layout(ViewGroup.java:5038)
11-21 10:00:39.542: E/AndroidRuntime(28855):    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)

我的猜测是它抛出了一个错误,因为它在一个空的持有人(分隔符)上寻找持有人的属性

【问题讨论】:

  • 哪一行抛出异常?您可以发布整个视图创建代码吗?
  • 发布异常日志跟踪
  • 不可能像 android:dividerHeight="Your desired height";?
  • 我已经添加了所有 getGroupView(ViewHolder 的变量设置除外)和日志

标签: android listview expandablelistview spacing


【解决方案1】:

NullPointerException in

at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:715)

可能意味着视图持有者没有正确初始化

您将持有人设置在 else 中。我猜你需要它是这样的吗?

if (groupPosition%2!=0) {
    convertView = mInflater.inflate(R.layout.fakeview, null);
} else {
   convertView = mInflater.inflate(R.layout.header_item, null);
   convertView.setBackgroundResource(R.drawable.custom_listview_item_header_expanded);  
}
holder.name = (TextView) convertView.findViewById(R.id.expandable_list_title);
holder.numberOfMembers = (TextView)convertView.findViewById(R.id.num_members_textview);
holder.editImageView = (ImageView)convertView.findViewById(R.id.header_item_imageview_edit);

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多