Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否从ArrayAdapter类更改ListView分隔符?_Android_Listview_Android Arrayadapter - Fatal编程技术网

Android 是否从ArrayAdapter类更改ListView分隔符?

Android 是否从ArrayAdapter类更改ListView分隔符?,android,listview,android-arrayadapter,Android,Listview,Android Arrayadapter,我有一个扩展ListActivity的类(foo),它实例化了扩展ArrayAdapter的类(fooAdap)。在fooAdap中,有一个getview()方法,我在其中填充我的ListView 在foo类中,我可以调用getListView().setDividerHeight(0)并使分隔符消失。有没有办法从fooAdap中的getView()访问该方法 foo.java public class foo extends ListActivity { ... protected

我有一个扩展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对象传递给fooAdap,这样就可以很容易地完成

或者您可以通过fooAdap构造函数传递该活动对象

 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 dividerHeight()设置为0

我有一个单独的ListView行布局,并在那里添加了另一个LinearLayout和TextView。然后,我将文件分隔符\u horizontal\u dark.9.png从android sdk目录复制到我的res/目录中,并将新TextView的背景设置为它,同时将TextView的MaxHeight设置为1dp


现在,我可以在getView()方法中将LinearLayout切换为View.VISIBLE或View.GONE。很长一段路,但似乎能满足我的需求。

我的回答对你有帮助吗?如果没有,请告诉我,我会为你找到答案的。谢谢你的主意。这确实允许我访问getListView(),但会导致它在滚动时绘制异常。还在试验。