(Android)ExpandableListView-单击子项时传递指向新活动的链接
我正在创建一个简单的音乐流应用原型,它使用一个可扩展的列表视图来显示不同的音乐类别和不同的收音机 我按照教程学习了可扩展列表的代码,如下所示:(Android)ExpandableListView-单击子项时传递指向新活动的链接,android,android-intent,Android,Android Intent,我正在创建一个简单的音乐流应用原型,它使用一个可扩展的列表视图来显示不同的音乐类别和不同的收音机 我按照教程学习了可扩展列表的代码,如下所示: public class MainActivity extends Activity { ExpandableListAdapter listAdapter; ExpandableListView expListView; List<String> listDataHeader; HashMap<String, List<Str
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);
}
}
公共类MainActivity扩展活动{
可扩展列表适配器;
ExpandableListView解释视图;
列表列表数据头;
HashMapListDataChild;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取列表视图
expListView=(ExpandableListView)findViewById(R.id.lvExp);
//准备列表数据
prepareListData();
listAdapter=新的ExpandableListAdapter(此,listDataHeader,listDataChild);
//设置列表适配器
expListView.setAdapter(listAdapter);
//检测子项单击
setOnChildClickListener(新的OnChildClickListener(){
@凌驾
公共布尔onChildClick(ExpandableListView父视图,视图v,
int groupPosition、int childPosition、long id){
Toast.makeText(
getApplicationContext(),
listDataHeader.get(groupPosition)
+ " : "
+listDataChild.get(
listDataHeader.get(groupPosition)).get(
儿童位置),吐司。长度(短)
.show();
返回false;
}
});
//创建时结束
}
/*
*准备列表数据
*/
私有void prepareListData(){
listDataHeader=新的ArrayList();
listDataChild=newHashMap();
//添加子数据
添加(“备选方案”);
添加(“环境”);
添加(“蓝色”);
添加(“经典”);
添加(“嘻哈”);
添加(“Jazz”);
添加(“岩石”);
添加(“测试”);
//添加子数据
List Alternative=new ArrayList();
备选方案。添加(“WTH.备选方案”);
备选方案。添加(“这是腐蚀”);
List Ambient=new ArrayList();
List Blues=new ArrayList();
布鲁斯。加上(“腹部向上4布鲁斯”);
List Classic=新的ArrayList();
List HipHop=new ArrayList();
List Jazz=new ArrayList();
List Rock=new ArrayList();
添加(“SoR无线电”);
添加(“Megarock电台”);
添加(“听觉月亮”);
列表测试=新建ArrayList();
Test.add(“带有链接的收音机,我知道它可以工作”);
//http://usa8-vn.mixstream.net:8138
listDataChild.put(listDataHeader.get(0),可选);//头,子数据
listDataChild.put(listDataHeader.get(1),环境);
listDataChild.put(listDataHeader.get(2),蓝色);
listDataChild.put(listDataHeader.get(3),经典);
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所需的方法
我的问题是,在这一刻,当我从可展开列表中单击一个子节点时,我只会发出一条消息。我现在想做的是,当我点击一个子节点时,我想传递一个链接,我必须以某种方式将该链接与该特定子节点关联到一个不同的活动,在该活动中,我将从该链接流式播放音乐(每个子节点将有一个不同的关联链接)
我已经知道如何使用Android MediaPlayer从资源中进行流式传输,我唯一的问题是在单击列表的子节点时绑定并发送信息
你知道怎么做吗?你应该使用create和一个额外的bundle来传递你想要的任何参数。然后,您可以使用以下方法启动它:例如
看一看,这里有一个如何实现这一点的例子