【问题标题】:passing value from one list view to another将值从一个列表视图传递到另一个
【发布时间】:2016-08-10 02:30:24
【问题描述】:

我正在尝试使用 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;
        }
    });
}
}

任何人都可以提供示例代码或建议吗?将不胜感激,谢谢

【问题讨论】:

  • 你在另一个活动中做了什么来获取数据?请也分享该代码。
  • 我看过那个教程,它只显示了如何在选择项目时显示吐司消息
  • 我还没有在其他活动中做任何事情,因为我不知道该怎么做

标签: java android android-studio expandablelistview


【解决方案1】:

在菜单类中使用public void setOnItemClickListener (AdapterView.OnItemClickListener l)。所以你将获得项目位置,然后在侦听器内部将意图传递给带有数据的 DisplayOrder Activity。

在 DisplayOrder Activity 中使用getIntent.getStringExtra("KEY"); //(If you are passing string) 来获取意图数据。在 arrayList 中添加该数据并将其设置为 listview。

希望它会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2022-11-22
    • 2017-05-20
    • 1970-01-01
    相关资源
    最近更新 更多