我创建了一个简单的音乐流应用原型,它使用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);
}
}
我还使用了一个适配器类,它提供了渲染listview所需的方法。
我的问题是,此时,当我从Expandable列表中单击子节点时,我只是Toast一条消息。我现在要做的是,当我点击一个子节点时,我想传递一个链接,我必须以某种方式将该特定的孩子关联到另一个活动,我将从链接流式传输音乐(每个孩子都有不同的链接)相关联)。
我已经知道如何使用Android MediaPlayer从资源中流式传输,我唯一的问题是在单击列表的子节点时绑定并发送信息。
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
您应该使用带有额外包的创建Intent来传递您想要的任何参数。然后,您可以使用startActivity方法启动它。
看看this question,有一个如何实现这一目标的例子。