2

特定の行のリストビュー コントロール内に複数のスピナーがあります。WebService からすべてのスピナーを動的に入力し、選択した項目ですべてのスピナーの値を変更できます。

経験値 国と州と市の 3 つのスピナーがあり、この 3 つのスピナーすべてが WS から入力され、ユーザーが国を選択している間に、countryselecteditem で州と都市のすべてのデータが変更されます。そして、州の選択されたアイテムの都市データの変更について...

また、スクロールしてその行に移動し、選択したgetView()3つのアイテムすべてを呼び出し、選択したアイテムですべてのアダプターを埋めます。

リストビュー内で3つのスピナーを処理するにはどうすればよいですか?

4

1 に答える 1

0
  1. 希望する 3 つのスピナーを含む ListItem Layout を設計し、それを ListView Adapter に設定します。
  2. 次に、以下のように 3 つの ID を含む POJO クラスのジェネリック タイプの SubClassArrayAdapter を取得し (必要に応じてさらに取得します)、Adapter を ListView に設定します。

    class SpinnersStateInListItem
    {
      private int countrySelectedPosition=0;
      private int stateSelectedPosition=0;
      private int citySelectedPosition=0;
      //here you need to generate respective getters and setter methods.
     }
    

    // 以下のコードを実行して、ビューをカスタマイズする ArrayAdapter クラスから派生したリストビューに SubClassArrayAdapter を設定します

      SubClassArrayAdapter<SpinnersStateInListItem> = new SubClassArrayAdapter<SpinnersStateInListItem>(context,resourceid,listof SpinnersStateInListItem Generic type);
    

    SubClassArrayAdapter クラスの getView() 内で、3 つのスピナー オブジェクトを作成し、配列アダプターを最初のスピナーに設定してから、OnItemSelectedListeners を 3 つのスピナーに設定します。次に、最初の Spinner の OnItemSelected メソッドで、ArrayAdapter を 2 番目の Spinner に設定します。これには、最初の Spinner で選択された Country に従って State のリストが含まれます。次に、選択された国および選択された州ごとの都市のリストを含む 2nd Spinners OnItemSelected メソッド内で、配列 Adapter を 3rd Spinner に設定します。ここでは、選択した項目に従ってデータをフィルタリングする必要があります。アイテムが選択されると、すぐに SpinnersStateInListItem のそれぞれのオブジェクトに保存されるため、リストビューをリロードしてもすべてのアイテムの状態がそのまま維持されます。例えば以下のように。

    OnItemSelected()
    {
     if(v==firstspinner)
      {
        listofSpinnersStateinListItem.get(listitemposition).setCountrySelectedPosition(spinnerselectposition);  
       } 
      }
    

州と都市についても上記と同じように。

  1. 最初に最初の国のデータを取得し、それを最初のスピナーに設定します。これにより、最初の国の州と最初の国、最初の州に関連する都市が同時に取得されます。

これがあなたを助けることを願っています。

于 2012-10-04T08:18:29.243 に答える