2012-07-19 77 views
3

我有一个类(foo)扩展ListActivity,它实例化一个类(fooAdap)扩展ArrayAdapter。在fooAdap中,有getview()方法,用于填充我的ListView。从ArrayAdapter类更改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; 
     } 
     ... 
    } 
} 
+0

我的答案可以帮助你,如果不是,请让我知道我会为你寻找这个。谢谢 – SALMAN 2012-07-20 08:11:07

回答

0

最后我使我自己的分配器和设置的ListView dividerHeight()为0,在XML布局。

我有一个独立的ListView行布局,并在那里添加了另一个LinearLayout和TextView。然后我将android sdk目录中的divider_horizo​​ntal_dark.9.png文件复制到我的res /目录中,并将新的TextView的背景设置为它,并将MaxHeight设置为1dp作为textview。

现在,我可以将LinearLayout切换到getView()方法中的View.VISIBLE或View.GONE。很长的路,但似乎让我想我想要的。

0

你有通currentActivity对象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; 
      } 
      ... 
     } 


    } 

这一定会帮助你。

感谢

+0

感谢您的想法。这确实允许我访问getListView(),但会导致它在滚动时奇怪地绘制。仍在试验。 – wufoo 2012-07-20 14:57:48