如何在Android中使用自定义ListView和分隔符?

5

我想在我的安卓应用程序中实现下拉刷新功能,所以我使用了这个库:Android-PullToRefresh。然而,我似乎无法设置自定义样式来编程分割。

代码很简单:

list = (PullToRefreshListView) findViewById(R.id.list);
int[] colors = {0, 0xFF97CF4D, 0}; 
list.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
list.setDividerHeight(1);

然而,它抛出了这个错误:方法setDivider(GradientDrawable)对于类型PullToRefreshListView未定义方法setDividerHeight(int)对于类型PullToRefreshListView未定义。在这里我做错了什么?
1个回答

8

PullToRefreshListView 不是 ListView,所以出现了这个错误。你应该访问 PullToRefreshListView 内部的 ListView 并在其上调用 setDivider* 方法。

list = (PullToRefreshListView) findViewById(R.id.list);
int[] colors = {0, 0xFF97CF4D, 0};
ListView inner = list.getRefreshableView();
inner.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
inner.setDividerHeight(1);

作为一种替代方法,您可以将渐变定义为XML可绘制项,并像示例这里中所示的那样在布局中设置属性。

例如:

<com.handmark.pulltorefresh.library.PullToRefreshListView
  android:divider="@drawable/fancy_gradient"
  android:dividerHeight="@dimen/divider_height"...

它报错了:类型不匹配:无法将ListView转换为PullToRefreshListView - input
1
请检查上面的代码:您应该在PullToRefreshListView上调用getRefreshableView()。在这种情况下,将其转换为ListView是无用的。我会在我的答案中去掉它。 - a.bertucci
代码没有起作用。最后我使用了一个XML可绘制对象来样式化分隔符。感谢您的帮助! :) - input
2
基于XML的解决方案可以直接使用。但我也确信基于代码的解决方案同样可行。我猜你的“list”引用是一个“PullToRefreshListView”,而在修改后的片段中,我假设它是一个“ListView”。为了解决这个问题,我会稍微修改我的答案。 - a.bertucci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接