在android中使用OnClickListner实现可扩展的listview

在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

我是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;
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。使用此动态值设置您的意图。