2016-04-18 9 views
0

onclicklistenerを使用して、リストビューから別のアクティビティのリストビューに値を渡そうとしています。私は重大な問題を抱えており、正しく行う方法を理解できません。以下はリストビューから別のリストビューに値を渡す

その上にメイン拡張可能なリストビューの私のコードです:

public class Menu extends AppCompatActivity { 

ExpandableListAdapter listAdapter; 
ExpandableListView expListView; 
List<String> listDataHeader; 
HashMap<String, List<String>> listDataChild; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu); 

    // get the listview 
    expListView = (ExpandableListView) findViewById(R.id.lvExp); 

    // preparing list data 
    prepareListData(); 

    listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); 

    // setting list adapter 
    expListView.setAdapter(listAdapter); 
} 

//Preparing the list data 

private void prepareListData() { 
    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    // Adding child data 
    listDataHeader.add("Starters"); 
    listDataHeader.add("Main Course"); 
    listDataHeader.add("Desserts"); 
    listDataHeader.add("Side Orders"); 
    listDataHeader.add("Drinks"); 

    // Adding child data 
    final List<String> starters = new ArrayList<String>(); 
    starters.add("Soup of the Day"); 
    starters.add("Prawn Cocktail"); 
    starters.add("Liver Pate"); 
    starters.add("Caesar Salad"); 
    starters.add("Cheesy Garlic Bread"); 

    List<String> maincourse = new ArrayList<String>(); 
    maincourse.add("Steak Burger"); 
    maincourse.add("Pappardelle Pasta"); 
    maincourse.add("Fish and Chips"); 
    maincourse.add("Piri Piri Roast Chicken"); 
    maincourse.add("Roast Beef"); 

    List<String> desserts = new ArrayList<String>(); 
    desserts.add("Ice Cream Select"); 
    desserts.add("Chocolate Brownie"); 
    desserts.add("Creme Brullee"); 
    desserts.add("Sticky Toffee Pudding"); 
    desserts.add("Strawberry Meringue"); 

    List<String> sides = new ArrayList<String>(); 
    sides.add("Onion Rings"); 
    sides.add("Chunky Chips"); 
    sides.add("Tobacco Onions"); 
    sides.add("Chef's Veg"); 
    sides.add("Salad"); 

    List<String> drinks = new ArrayList<String>(); 
    drinks.add("Beer"); 
    drinks.add("Wine"); 
    drinks.add("Coke"); 
    drinks.add("Orange Juice"); 
    drinks.add("Tea"); 
    drinks.add("Coffee"); 

    listDataChild.put(listDataHeader.get(0), starters); // Header, Child data 
    listDataChild.put(listDataHeader.get(1), maincourse); 
    listDataChild.put(listDataHeader.get(2), desserts); 
    listDataChild.put(listDataHeader.get(3), sides); 
    listDataChild.put(listDataHeader.get(4), drinks); 


    expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) 
     { 

      final String selected = (String) parent.getSelectedItem(); 
      Intent i - new Intent(getApplicationContext(), DisplayOrder.class); 
      i.putExtra("Name", selected); 
      startActivity(i); 

      Toast.makeText(getApplicationContext(), listDataHeader.get(groupPosition) + " : " + listDataChild.get(listDataHeader.get(groupPosition)).get(childPosition), Toast.LENGTH_SHORT) 
        .show(); 
      return false; 
     } 
    }); 
} 
} 

は、誰もがサンプルコードやアドバイスを助けることはできますか?

+0

データを取得するための別のアクティビティで行ったことはありますか?そのコードも共有してください。 –

+0

参照用にこのリンクをチェックしてくださいhttp://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/ –

+0

Iveはチュートリアルを見て、項目が選択されたときにトーストメッセージを表示する方法を示しています – IonaMc

答えて

0

メニュークラスでpublic void setOnItemClickListener (AdapterView.OnItemClickListener l)を使用してください。アイテムの位置を取得してから、内部のリスナは、Dataを使用してDisplayOrderアクティビティへのインテントを渡します。

In DisplayOrderアクティビティでは、インテントデータを取得するためにgetIntent.getStringExtra("KEY"); //(If you are passing string)を使用します。そのデータをarrayListに追加し、それをlistviewに設定します。

希望します。

関連する問題