2016-05-14 22 views
2

私はアンドロイドアプリケーションで作業しています。実装したい複雑なレイアウト階層で壁に当たっています。アプリケーションは、コーヒーの場所のメニューを表示します。今の時点で、メニューは次のようになります。Android ExpandableListアイテムのカスタム複雑なレイアウトで表示する

enter image description here

リストがRecyclerViewとして実装されています。ビューのカスタムアダプターは、各要素のアクションを処理します。要素をタッチすると、注文価格が増加し、選択された要素の合計に1が加算されます。番号をクリックしてピックアップダイアログを表示し、金額を変更することもできます。

あなたが想像しているように、そこにはたくさんのコードがあります。

これは私が実装したいの理論的なレイアウトです:

enter image description here

私はインナーExpandableListViewに焦点を当てています。基本的には、食べ物や飲み物などでメニュー項目を分類したいと考えています。

問題は、アイテムのレイアウトの「複雑さ」をどうすれば維持できるかわかりません。私はこのように、唯一の項目名と簡単なExpandableListViewを作成するために管理してきました:

enter image description here

しかし、私は本当に私がExpandableListView以内に、前のレイアウト用に作成されたアイテムのアダプタを使用する方法がわかりません。残念ながら私はたくさんのコードを共有することはできませんが、コードスニペットを求めているわけではありませんが、これを実装する方法、アイデア、ヒントについてもっと詳しくお尋ねします...初めてのAndroidアプリケーション:-)

どんな助けも非常に高く評価されるでしょう。

ありがとうございます!

答えて

2

まあ、私の問題の解決策を見つけました。その日の終わりには、それほど複雑ではありませんでした。私は誰かが同じ状況にある場合に備えて要約しようとします。

まず、ExpandableListView用のカスタムアダプタを作成する必要があります。私は以前のRecyclerViewのためのカスタムアダプターを持っていた、それは私を混乱させたViewHolderの後を使用した。

Thisカスタムアダプタを実装する方法を理解するには、実際には非常に便利でした。上書きする重要な方法はgetChildViewです。このメソッドでは、子ビュー全体が構築されます。

@Override 
public View getChildView(int listPosition, final int expandedListPosition, 
          boolean isLastChild, View convertView, ViewGroup parent) { 
     final MenuItem item = (MenuItem) getChild(listPosition, expandedListPosition); 

     if (convertView == null) { 
      LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = layoutInflater.inflate(R.layout.menu_item, null); 
     } 

     // Save final reference to be able to access it in inner classes 
     final View finalConvertView = convertView; 

     // Set the item name 
     TextView itemName = (TextView) convertView.findViewById(R.id.item_menu_name); 
     itemName.setText(item.getName()); 

     // Set item price 
     TextView itemPrice = (TextView) convertView.findViewById(R.id.item_menu_price); 
     itemPrice.setText(item.getFormattedPrice()); 

これは完全なコードではありませんが、あなたが見ることができるかそのわずかmenu_item.xmlレイアウトでビューを取得し、私はAndroid data bingindを使用していた前

:-)それらを取り込むの問題が、私ドンViewHolderなしで使用する方法はわかりません。

関連する問題