3

ArrayAdapter を拡張するクラス (fooAdap) をインスタンス化する ListActivity を拡張するクラス (foo) があります。fooAdap には、ListView に入力する getview() メソッドがあります。

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 ObjectをfooAdapに渡す必要があり、そこで簡単に行うことができます。

または、そのActivityオブジェクトを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;
          }
          ...
       }


    }

これはきっとあなたを助けるでしょう。

ありがとう

于 2012-07-19T21:20:46.307 に答える
0

最終的に、独自の仕切りを作成し、XML レイアウトで ListView dividerHeight() を 0 に設定しました。

ListView 行の別のレイアウトがあり、そこに別の LinearLayout と TextView を追加しました。次に、ファイルdivider_horizo​​ntal_dark.9.pngをandroid sdkディレクトリからres /ディレクトリにコピーし、新しいTextViewの背景をそれに設定し、テキストビューのMaxHeightを1dpに設定しました。

これで、getView() メソッド内で LinearLayout を View.VISIBLE または View.GONE に切り替えることができます。長い道のりですが、私が望むものを手に入れたようです。

于 2012-07-20T15:23:51.143 に答える