我有一个扩展ListActivity的类(foo),它实例化了一个扩展ArrayAdapter的类(fooAdap)。在fooAdap中,有一个getview()方法,用于填充ListView。
从foo类中,我可以调用getListView().setDividerHeight(0)并使分隔符消失。有没有办法从fooAdap中的getView()访问该方法?
foo.java
public class foo extends ListActivity
{
...
protected void onCreate (Bundle savedInstanceState)
{
super.onCreate (savedInstanceState);
...
ListView lv = getListView ();
lv.setDividerHeight (0);
fooAdap foo = new fooAdap (this,android.R.layout.simple_list_item_single_choice, mRowData);
...
}
fooAdap.java
public class fooAdap extends ArrayAdapter
{
...
public View getView (int position, View convertView, ViewGroup parent)
{
...
switch (position)
{
case 1: // show divider for these rows in listview
case 2:
break;
case 3: // hide divider for this row in listview
break;
}
...
}
}
您需要将currentActivity Object传递给fooAdap,在那里就可以轻松完成。
或者,您可以通过fooAdap构造函数传递该Activity对象。
Activity currentActivity=foo.this;
fooAdap foo = new fooAdap (this,android.R.layout.simple_list_item_single_choice, mRowData);
foo.currentActivity=currentActivity;
public class fooAdap extends ArrayAdapter
{
Activity currentActivity;
public View getView (int position, View convertView, ViewGroup parent)
{
...
switch (position)
{
case 1: // show divider for these rows in listview
case 2:
break;
case 3: // hide divider for this row in listview
this.currentActivity.getListView().setDividerHeight(0);
break;
}
...
}
}
这肯定会对你有所帮助。
感谢
我最终制作了自己的分隔符,并在XML布局中将ListView分隔符Height()设置为0。
我有一个单独的ListView行布局,并在那里添加了另一个LinearLayout和TextView。然后,我将文件divider_horizontal_dark.9.png从android sdk目录复制到我的res/目录中,并将新TextView的背景设置为它,并将文本视图的MaxHeight设置为1dp。
现在我可以在getView()方法中将LinearLayout切换为View.VISIBLE或View.GONE。走了很长一段路,但似乎得到了我想要的。