2014-03-29 97 views
0

我正在创建一个简单的音乐流应用原型,它使用ExpandableListView来显示不同的音乐类别和不同的收音机。(Android)ExpandableListView - 点击儿童时将链接传递给新活动

我遵循的扩展列表的代码的教程,它看起来像这样:

public class MainActivity extends Activity { 

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_main); 

    //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); 

    //Detects child item click 
    expListView.setOnChildClickListener(new OnChildClickListener(){ 
     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      Toast.makeText(
        getApplicationContext(), 
        listDataHeader.get(groupPosition) 
          + " : " 
          + listDataChild.get(
            listDataHeader.get(groupPosition)).get(
            childPosition), Toast.LENGTH_SHORT) 
        .show(); 
      return false; 
     } 

    }); 
    //ends OnCreate 
} 

/* 
* Preparing the list data 
*/ 
private void prepareListData() { 
    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    // Adding child data 
    listDataHeader.add("Alternative"); 
    listDataHeader.add("Ambient"); 
    listDataHeader.add("Blues"); 
    listDataHeader.add("Classical"); 
    listDataHeader.add("Hip-Hop"); 
    listDataHeader.add("Jazz"); 
    listDataHeader.add("Rock"); 
    listDataHeader.add("Test"); 

    // Adding child data 
    List<String> Alternative = new ArrayList<String>(); 
    Alternative.add("WTH.Alternative"); 
    Alternative.add("This Is Corrosion"); 

    List<String> Ambient = new ArrayList<String>(); 

    List<String> Blues = new ArrayList<String>(); 
    Blues.add("Belly Up 4 Blues"); 

    List<String> Classical = new ArrayList<String>(); 
    List<String> HipHop = new ArrayList<String>(); 
    List<String> Jazz = new ArrayList<String>(); 

    List<String> Rock = new ArrayList<String>(); 
    Rock.add("SoR Radio"); 
    Rock.add("Megarock Radio"); 
    Rock.add("Aural Moon"); 

    List<String> Test = new ArrayList<String>(); 
    Test.add("Radio with Link that I know it works"); 
    //http://usa8-vn.mixstream.net:8138 

    listDataChild.put(listDataHeader.get(0), Alternative); // Header, Child data 
    listDataChild.put(listDataHeader.get(1), Ambient); 
    listDataChild.put(listDataHeader.get(2), Blues); 
    listDataChild.put(listDataHeader.get(3), Classical); 
    listDataChild.put(listDataHeader.get(4), HipHop); 
    listDataChild.put(listDataHeader.get(5), Jazz); 
    listDataChild.put(listDataHeader.get(6), Rock); 
    listDataChild.put(listDataHeader.get(7), Test); 
} 

} 

我还使用适配器类,它提供所需的方法来呈现列表视图。

我的问题是,在这一刻,当我从Expandable列表中单击一个子节点时,我只是Toast一条消息。我现在想要做的是,当我点击一个孩子节点时,我想传递一个链接,我必须以某种方式将该孩子关联到另一个不同的活动,我将从链接中播放音乐(每个孩子都会有不同的链接相关)。

我已经知道如何使用Android MediaPlayer从资源进行流式传输,我唯一的问题是在单击列表的子节点时绑定和发送信息。

任何想法如何做到这一点?

回答

0

你应该使用一个额外的包创建一个Intent来传递你想要的任何参数。例如,您可以使用startActivity方法启动它。

看看this question,有一个如何实现它的例子。

相关问题