在android中使用OnClickListner实现可扩展的listview
我是android新手,请帮我解决这个问题。 在可展开列表视图中,单击每个子列表,新活动应打开 这是我的密码在android中使用OnClickListner实现可扩展的listview,android,xml,Android,Xml,我是android新手,请帮我解决这个问题。 在可展开列表视图中,单击每个子列表,新活动应打开 这是我的密码 package com.example.index; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.Intent
package com.example.index;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ExpandableListView;
public class IndexMainActivity 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_index_main);
expListView = (ExpandableListView) findViewById(R.id.lvExp);
// preparing list data
prepareListData();
listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
// setting list adapter
expListView.setAdapter(listAdapter);
}
private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
// Adding child data
listDataHeader.add("Part 1");
listDataHeader.add("Part 2");
listDataHeader.add("Part 3");
// Adding child data
List<String> parta = new ArrayList<String>();
parta.add("Sweet Hour Of Prayer");
parta.add("Prayer and Royal Family");
parta.add("The Holy Bible-King James Version");
parta.add("William shakespeare - Scriptres about prayer");
List<String> partb = new ArrayList<String>();
partb.add("Samuel Rutherford/scriptures-Thankfulness");
List<String> partc = new ArrayList<String>();
partc.add("Matthew Henry/Scriptures on - Faith");
partc.add("John Wesley/Scriptures on - Freedom");
partc.add("Charles Simeon/Scriptures on -Protection");
partc.add("Christmas Evans/Scriptures on - Guidance");
listDataChild.put(listDataHeader.get(0), parta); // Header, Child data
listDataChild.put(listDataHeader.get(1), partb);
listDataChild.put(listDataHeader.get(2), partc);
}
}
package com.example.index;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.ExpandableListView;
公共类IndexMainActivity扩展了活动{
可扩展列表适配器;
ExpandableListView解释视图;
列表列表数据头;
HashMapListDataChild;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u index\u main);
expListView=(ExpandableListView)findViewById(R.id.lvExp);
//准备列表数据
prepareListData();
listAdapter=新的ExpandableListAdapter(此,listDataHeader,listDataChild);
//设置列表适配器
expListView.setAdapter(listAdapter);
}
私有void prepareListData(){
listDataHeader=新的ArrayList();
listDataChild=newHashMap();
//添加子数据
listDataHeader.添加(“第1部分”);
listDataHeader.添加(“第2部分”);
listDataHeader.添加(“第3部分”);
//添加子数据
List parta=new ArrayList();
parta.加上(“祈祷的甜蜜时刻”);
第A部分加上(“祈祷和王室”);
第A部分加上(“圣经詹姆士国王版”);
第A部分加上(“威廉·莎士比亚——关于祈祷的剧本”);
List partb=new ArrayList();
B部分加上(“塞缪尔·卢瑟福/圣经感谢”);
List partc=new ArrayList();
第C部分加上(“马修·亨利/信仰经文”);
第C部分添加(“约翰·卫斯理/关于自由的经文”);
第C部分添加(“查尔斯·西缅/关于保护的经文”);
第C部分添加(“圣诞伊凡斯/圣经-指南”);
listDataChild.put(listDataHeader.get(0),parta);//头,子数据
listDataChild.put(listDataHeader.get(1),partb);
listDataChild.put(listDataHeader.get(2),partc);
}
}
现在有三个列表,即a部分、b部分和c部分。单击a部分,我将获得四个孩子列表,单击第一个孩子列表,即甜蜜祈祷时间,新活动将打开。请尝试以下代码:
public class MyActivity extends Activity implements ExpandableListView.OnChildClickListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.event_mainactivity);
mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
ExpandableListAdapter adapter = new ExpandableListAdapter(this,
mExpandableListView, mGroupCollection);
mExpandableListView.setAdapter(adapter);
mExpandableListView.setOnChildClickListener(this);
}
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)
{
Toast.makeText(getApplicationContext(), "Go to Activity :: "+childPosition, Toast.LENGTH_LONG).show();
return true;
}
}
对于
ExpandableListView
,有一个onChildClickListener
。检查此代码:
yourListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// Open activity using intent...
return false;
}
});
希望有帮助 请张贴您的代码,很高兴它有帮助!接受答案或投票将不胜感激。谢谢您好,如果单击父组2或3的子列表,我在父组2中遇到问题。它仅链接到父组1。在onChildClick中,您有groupPosition和childPosition。使用此动态值设置您的意图。