当单击可展开列表视图中的子项时,如何从资产中获取特定的文本文件



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

我的主要活动代码

公共类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);
}

}

我的第二个活动代码

公共类ClassListDetail扩展了AppCompatActivity{

@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);
}
}

}


}

}

感谢您提前提供的帮助。

我认为您的代码没有任何问题,只是onChildClick当您用intent调用ClassListDetail时,您没有传递position,另一方面,您试图从不存在的意图中获取position,然后它取其默认值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的好例子,请尝试以下链接:https://www.journaldev.com/9942/android-expandablelistview-example-tutorial

最新更新