3

我有一个扩展 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;
      }
      ...
   }
}
4

2 回答 2

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;
          }
          ...
       }


    }

这肯定会帮助你。

谢谢

于 2012-07-19T21:20:46.307 回答
0

我最终制作了自己的分隔线,并在 XML 布局中将 ListView dividerHeight() 设置为 0。

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

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

于 2012-07-20T15:23:51.143 回答