将可扩展列表中的选择传递给新活动

时间:2016-01-05 04:03:47

标签: java android android-activity expandablelistview pass-data

您好我是编程的新手,并且在我复制可扩展列表的教程并且已经停留超过1周之后开始有很多乐趣。

我正在尝试使用可扩展列表中的最终选择,并将此信息传递给我的新活动。它现在设置的方式是我可以传递字符串值id(我不想要这个)我想要点击的实际字符串。

public class MainActivity extends Activity {
public final static String ID_EXTRA = "com.example.chris.prontopages2.MainActivity.";
HashMap<String, List<String>> Movies_category;
List<String> Movies_list;
ExpandableListView Exp_list;
MoviesAdapter adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Exp_list = (ExpandableListView) findViewById(R.id.exp_list);
    Movies_category = DataProvider.getInfo();
    Movies_list = new ArrayList<String>(Movies_category.keySet());
    adapter = new MoviesAdapter(this, Movies_category, Movies_list);
    Exp_list.setAdapter(adapter);

    Exp_list.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
            Intent i = new Intent("Main22Activity.class");
            i.putExtra(ID_EXTRA, String.valueOf(id));
            startActivity(i);
            return false;

        }
    });

}

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容获取给定位置的元素

ExpandableListAdapter itemAdapter = parent.getExpandableListAdapter(); 
String selectedItem = (String) itemAdapter.getChild(groupPosition, childPosition);

然后按照你的意图传递它。

答案 1 :(得分:0)

您无需传递子选择的ID。试试这个会对你有帮助。

 Exp_list.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {

String movieName = Movies_category.get(Movies_list.get(groupPosiion)).get(childPosition)
                Intent i = new Intent("Main22Activity.class");
                i.putExtra(ID_EXTRA, movieName);
                startActivity(i);
                return false;

            }
        });

并在其他活动中获得额外费用。