Java 在可展开列表视图中单击子级时,如何从资源中获取特定文本文件

Java 在可展开列表视图中单击子级时,如何从资源中获取特定文本文件,java,android,android-studio,Java,Android,Android Studio,我正在尝试创建一个赞美诗应用程序。我已经能够通过点击child来打开一个只有textview的新活动。问题是,所有子项都从资源中获取并打开相同的文本文件。该代码适用于列表视图,但我不知道如何用于可扩展的列表视图 我的主要活动代码 公共类ClassActivity扩展了AppCompatActivity{ private ExpandableListView listView; private MyExpandableAdapter listAdapter; private List<Str

我正在尝试创建一个赞美诗应用程序。我已经能够通过点击child来打开一个只有textview的新活动。问题是,所有子项都从资源中获取并打开相同的文本文件。该代码适用于
列表视图
,但我不知道如何用于可扩展的列表视图

我的主要活动代码

公共类ClassActivity扩展了AppCompatActivity{

private ExpandableListView listView;
private MyExpandableAdapter listAdapter;
private List<String> ListDataHeader;
private HashMap<String,List<String>> listHash;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_class);


    listView = (ExpandableListView) findViewById(R.id.list);
    initData();
    listAdapter = new MyExpandableAdapter(this, ListDataHeader, listHash);
    listView.setAdapter(listAdapter);

    listView.setDividerHeight(2);
    listView.setGroupIndicator(null);
    listView.setClickable(true);

    listView.setOnChildClickListener(new  ExpandableListView.OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView arg0,
                                    View arg1, int arg2, int arg3, long arg4) {
            Intent myIntent = new Intent(ClassActivity.this, ClassListDetail.class);
            ClassActivity.this.startActivity(myIntent);
            return false;
        }
    });

}

private void initData() {
    ListDataHeader = new ArrayList <>();
    listHash = new HashMap <>();


    ListDataHeader.add("PROCESSIONAL HYMN 1");
    ListDataHeader.add("LIGHTING THE CANDLES 2");
    ListDataHeader.add("KNEELING DOWN 3 - 4");
    ListDataHeader.add("FORGIVENESS AND REPENTANCE 5 - 50");
    ListDataHeader.add("SERVICES 51 - 125");
    ListDataHeader.add("SONGS FOR PALM SUNDAY 126 - 150");
    ListDataHeader.add("MERCY AND DURING PASSION WEEK 151 - 175");
    ListDataHeader.add("EASTER DAY 176 - 200");
    ListDataHeader.add("GOD'S GLORY AND ASCENSION DAY 201 - 225");
    ListDataHeader.add("HOLY SPIRIT 226 - 250");
    ListDataHeader.add("SPIRITUAL POWER 251 - 275");
    ListDataHeader.add("GOOD NEWS 276 - 300");
    ListDataHeader.add("PRAISE 301 - 325");
    ListDataHeader.add("GLORY 326 - 350");
    ListDataHeader.add("JOY 351 - 375");
    ListDataHeader.add("THANKSGIVING 376 - 400");
    ListDataHeader.add("BLESSING 401 - 425");
    ListDataHeader.add("HARVEST 426 - 450");
    ListDataHeader.add("VICTORY 451 - 485");
    ListDataHeader.add("HEALING 486 - 500");
    ListDataHeader.add("BAPTISM 501 - 520");
    ListDataHeader.add("FAITH 521 - 550");
    ListDataHeader.add("JUDGEMENT 551 - 570");
    ListDataHeader.add("THE COMING OF CHRIST 571 - 600");
    ListDataHeader.add("GOD'S WORK 601 - 630");


    List<String> A = new ArrayList<>();
    A.add("Core");
    A.add("Games");
    A.add("Core");
    A.add("Games");
    A.add("Core");
    A.add("Games");
    A.add("Core");
    A.add("Games");

    List<String> B = new ArrayList<>();
    B.add("Apache");
    B.add("Applet");
    B.add("AspectJ");
    B.add("Beans");
    B.add("Crypto");

    // Desktop Java
    List<String> C = new ArrayList<>();
    C.add("Accessibility");
    C.add("AWT");
    C.add("ImageIO");
    C.add("Print");

    // Enterprise Java
    List<String> D = new ArrayList<>();
    D.add("EJB3");
    D.add("GWT");
    D.add("Hibernate");
    D.add("JSP");

    // Core Java
    List<String> E = new ArrayList<>();
    E.add("Apache");
    E.add("Applet");
    E.add("AspectJ");
    E.add("Beans");
    E.add("Crypto");


    // Desktop Java
    List<String> F = new ArrayList<>();
    F.add("Accessibility");
    F.add("AWT");
    F.add("ImageIO");
    F.add("Print");


    // Enterprise Java
    List<String> G = new ArrayList<>();
    G.add("EJB3");
    G.add("GWT");
    G.add("Hibernate");
    G.add("JSP");

    // Core Java
    List<String> H = new ArrayList<>();
    H.add("Apache");
    H.add("Applet");
    H.add("AspectJ");
    H.add("Beans");
    H.add("Crypto");


    // Desktop Java
    List<String> I = new ArrayList<>();
    I.add("Accessibility");
    I.add("AWT");
    I.add("ImageIO");
    I.add("Print");


    // Enterprise Java
    List<String> J = new ArrayList<>();
    J.add("EJB3");
    J.add("GWT");
    J.add("Hibernate");
    J.add("JSP");

    // Core Java
    List<String> K = new ArrayList<>();
    K.add("Apache");
    K.add("Applet");
    K.add("AspectJ");
    K.add("Beans");
    K.add("Crypto");
    K.add("AspectJ");
    K.add("Beans");
    K.add("Crypto");


    // Desktop Java
    List<String> L = new ArrayList<>();
    L.add("Accessibility");
    L.add("AWT");
    L.add("ImageIO");
    L.add("Print");


    // Enterprise Java
    List<String> M = new ArrayList<>();
    M.add("EJB3");
    M.add("GWT");
    M.add("Hibernate");
    M.add("JSP");

    // Core Java
    List<String> N = new ArrayList<>();
    N.add("Apache");
    N.add("Applet");
    N.add("AspectJ");
    N.add("Beans");
    N.add("Crypto");

    // Desktop Java
    List<String> O = new ArrayList<>();
    O.add("Accessibility");
    O.add("AWT");
    O.add("ImageIO");
    O.add("Print");


    // Enterprise Java
    List<String> P = new ArrayList<>();
    P.add("EJB3");
    P.add("GWT");
    P.add("Hibernate");
    P.add("JSP");

    // Core Java
    List<String> Q = new ArrayList<>();
    Q.add("Apache");
    Q.add("Applet");
    Q.add("AspectJ");
    Q.add("Beans");
    Q.add("Crypto");


    // Desktop Java
    List<String> R = new ArrayList<>();
    R.add("Accessibility");
    R.add("AWT");
    R.add("ImageIO");
    R.add("Print");


    // Enterprise Java
    List<String> S = new ArrayList<>();
    S.add("EJB3");
    S.add("GWT");
    S.add("Hibernate");
    S.add("JSP");

    // Core Java
    List<String> T = new ArrayList<>();
    T.add("Apache");
    T.add("Applet");
    T.add("AspectJ");
    T.add("Beans");
    T.add("Crypto");

    // Desktop Java
    List<String> U = new ArrayList<>();
    U.add("Accessibility");
    U.add("AWT");
    U.add("ImageIO");
    U.add("Print");


    // Enterprise Java
    List<String> V = new ArrayList<>();
    V.add("EJB3");
    V.add("GWT");
    V.add("Hibernate");
    V.add("JSP");

    // Core Java
    List<String> W = new ArrayList<>();
    W.add("Apache");
    W.add("Applet");
    W.add("AspectJ");
    W.add("Beans");
    W.add("Crypto");


    // Desktop Java
    List<String> X = new ArrayList<>();
    X.add("Accessibility");
    X.add("AWT");
    X.add("ImageIO");
    X.add("Print");


    // Enterprise Java
    List<String> Y = new ArrayList<>();
    Y.add("EJB3");
    Y.add("GWT");
    Y.add("Hibernate");
    Y.add("JSP");

    // Core Java
    List<String> Z = new ArrayList<>();
    Z.add("Apache");
    Z.add("Applet");
    Z.add("AspectJ");
    Z.add("Beans");
    Z.add("Crypto");


    // Desktop Java
    List<String> AA = new ArrayList<>();
    AA.add("Accessibility");
    AA.add("AWT");
    AA.add("ImageIO");
    AA.add("Print");

    // Enterprise Java
    List<String> AB  = new ArrayList<>();
    AB.add("EJB3");
    AB.add("GWT");
    AB.add("Hibernate");
    AB.add("JSP");

    // Core Java
    List<String> AC = new ArrayList<>();
    AC.add("Apache");
    AC.add("Applet");
    AC.add("AspectJ");
    AC.add("Beans");
    AC.add("Crypto");


    // Desktop Java
    List<String> AD = new ArrayList<>();
    AD.add("Accessibility");
    AD.add("AWT");
    AD.add("ImageIO");
    AD.add("Print");


    // Enterprise Java
    List<String> AE = new ArrayList<>();
    AE.add("EJB3");
    AE.add("GWT");
    AE.add("Hibernate");
    AE.add("JSP");

    // Core Java
    List<String> AF = new ArrayList<>();
    AF.add("Apache");
    AF.add("Applet");
    AF.add("AspectJ");
    AF.add("Beans");
    AF.add("Crypto");


    // Desktop Java
    List<String> AG = new ArrayList<>();
    AG.add("Accessibility");
    AG.add("AWT");
    AG.add("ImageIO");
    AG.add("Print");


    // Enterprise Java
    List<String> AH = new ArrayList<>();
    AH.add("EJB3");
    AH.add("GWT");
    AH.add("Hibernate");
    AH.add("JSP");

    // Core Java
    List<String> AI = new ArrayList<>();
    AI.add("Apache");
    AI.add("Applet");
    AI.add("AspectJ");
    AI.add("Beans");
    AI.add("Crypto");


    // Desktop Java
    List<String> AJ = new ArrayList<>();
    AJ.add("Accessibility");
    AJ.add("AWT");
    AJ.add("ImageIO");
    AJ.add("Print");


    // Enterprise Java
    List<String> AK = new ArrayList<>();
    AK.add("EJB3");
    AK.add("GWT");
    AK.add("Hibernate");
    AK.add("JSP");

    // Core Java
    List<String> AL = new ArrayList<>();
    AL.add("Apache");
    AL.add("Applet");
    AL.add("AspectJ");
    AL.add("Beans");
    AL.add("Crypto");


    // Desktop Java
    List<String> AM = new ArrayList<>();
    AM.add("Accessibility");
    AM.add("AWT");
    AM.add("ImageIO");
    AM.add("Print");


    // Enterprise Java
    List<String> AN = new ArrayList<>();
    AN.add("EJB3");
    AN.add("GWT");
    AN.add("Hibernate");
    AN.add("JSP");

    // Core Java
    List<String> AO = new ArrayList<>();
    AO.add("Apache");
    AO.add("Applet");
    AO.add("AspectJ");
    AO.add("Beans");
    AO.add("Crypto");

    // Core Java
    List<String> AP = new ArrayList<>();
    AP.add("Apache");
    AP.add("Applet");
    AP.add("AspectJ");
    AP.add("Beans");
    AP.add("Crypto");

    // Core Java
    List<String> AQ = new ArrayList<>();
    AQ.add("Apache");
    AQ.add("Applet");
    AQ.add("AspectJ");
    AQ.add("Beans");
    AQ.add("Crypto");

    // Core Java
    List<String> AR = new ArrayList<>();
    AR.add("Apache");
    AR.add("Applet");
    AR.add("AspectJ");
    AR.add("Beans");
    AR.add("Crypto");


    listHash.put(ListDataHeader.get(0), A);
    listHash.put(ListDataHeader.get(1), B);
    listHash.put(ListDataHeader.get(2), C);
    listHash.put(ListDataHeader.get(3), D);
    listHash.put(ListDataHeader.get(4), E);
    listHash.put(ListDataHeader.get(5), F);
    listHash.put(ListDataHeader.get(6), G);
    listHash.put(ListDataHeader.get(7), H);
    listHash.put(ListDataHeader.get(8), I);
    listHash.put(ListDataHeader.get(9), J);
    listHash.put(ListDataHeader.get(10), K);
    listHash.put(ListDataHeader.get(11), L);
    listHash.put(ListDataHeader.get(12), M);
    listHash.put(ListDataHeader.get(13), N);
    listHash.put(ListDataHeader.get(14), O);
    listHash.put(ListDataHeader.get(15), P);
    listHash.put(ListDataHeader.get(16), Q);
    listHash.put(ListDataHeader.get(17), R);
    listHash.put(ListDataHeader.get(18), S);
    listHash.put(ListDataHeader.get(19), T);
    listHash.put(ListDataHeader.get(20), U);
    listHash.put(ListDataHeader.get(21), V);
    listHash.put(ListDataHeader.get(22), W);
    listHash.put(ListDataHeader.get(23), X);
    listHash.put(ListDataHeader.get(24), Y);
    listHash.put(ListDataHeader.get(25), Z);
    listHash.put(ListDataHeader.get(26), AA);
    listHash.put(ListDataHeader.get(27), AB);
    listHash.put(ListDataHeader.get(28), AC);
    listHash.put(ListDataHeader.get(29), AD);
    listHash.put(ListDataHeader.get(30), AE);
    listHash.put(ListDataHeader.get(31), AF);
    listHash.put(ListDataHeader.get(32), AG);
    listHash.put(ListDataHeader.get(33), AH);
    listHash.put(ListDataHeader.get(34), AI);
    listHash.put(ListDataHeader.get(35), AJ);
    listHash.put(ListDataHeader.get(36), AK);
    listHash.put(ListDataHeader.get(37), AL);
    listHash.put(ListDataHeader.get(38), AM);
    listHash.put(ListDataHeader.get(39), AN);
    listHash.put(ListDataHeader.get(40), AO);
    listHash.put(ListDataHeader.get(41), AP);
    listHash.put(ListDataHeader.get(42), AQ);
    listHash.put(ListDataHeader.get(43), AR);

}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_class_list_detail );

    Intent intent = getIntent();
    int position = intent.getIntExtra("position", 0);

    // Here we turn your string.xml in an array
    String[] myKeys = getResources().getStringArray(R.array.sects);

    TextView myTextView = (TextView) findViewById(R.id.my_textview);
    myTextView.setMovementMethod(new ScrollingMovementMethod());
    myTextView.setText(myKeys[position]);


    if (position == 0) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/927.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }

    if (position == 1) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/210.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }
    if (position == 2) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/131.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }
    if (position == 3) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/edit.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }
    if (position == 4) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/792.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }
    if (position == 5) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/667.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }

    if (position == 6) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/676.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }
    if (position == 7) {
        String text = "";
        try {
            InputStream is = getAssets().open("english/189.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            text = new String(buffer);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        myTextView.setText(text);
    }

        }



    }




}
}


提前感谢您的帮助。

我看不出您的代码有什么问题,除了当您以
意图调用
classlist detail
时,您没有通过
位置
,另一方面,您正试图从不存在的意图中获得
位置
取其默认值0,这就是为什么每个子级都从资产中获取相同的文件

编辑:

只需在
ClassActivity
中替换以下方法,并查看输出:

listView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                                        int groupPosition, int childPosition, long id) {
                Intent myIntent = new Intent(ClassActivity.this, ClassListDetail.class);
                //here you need to determine which position you want to use according to your use case
                myIntent.putExtra("position",groupPosition);
                startActivity(myIntent);
                return false;
                return false;
            }
        });
注意: 这里,我使用group position只是为了举个例子,但是如果您需要
childPosition
,您可以使用它

如果您想要一个
ExpandableListView
的好例子,请尝试以下链接:

请Mayur Gajira,你能帮我把代码整理一下吗?正如你所说,我认为问题在于classdetail活动中,on-child将显示为文本视图。我在同一个应用程序上有一个listview,所以我只是复制了listview代码并粘贴了它。我还要将listheader和子数组列表复制到第二个活动中,因为这是我目前遇到的另一个问题。我留下了listview字符串数组名,实际上是在child上进行测试。请问,我该如何对它进行排序?该代码适用于listview tho。我刚刚复制并粘贴了。@BrotherSamProduction请查看我编辑的答案,并告诉我是否有任何问题。@BrotherSamProduction很高兴我能提供帮助,如果答案对您有效,请接受。