Tôi là một người mới sử dụng Java và tôi đã sử dụng mã bên dưới để hiển thị danh sách các TextView có thể nhấp được gọi là lớp cụ thể khi chúng được nhấp.Android: Looping thông qua một mảng chuỗi - trợ giúp cần thiết về logic cho phương pháp ý định
Đây là danh sách tên nhóm bóng đá.
Ví dụ:
Arsenal Manchester United Chelsea
Nhấp vào TextView Arsenal (TextView id = ars) sẽ gọi ars.class Nhấp vào TextView Chelsea (TextView id = che) sẽ gọi che.class
tôi có hơn 20 tên đội bóng.
Tôi có một mảng id văn bản, mà tôi lặp lại và gán cho họ một hành động có thể nhấp. Điều này hoạt động tốt.
Tôi có một chuỗi chuỗi tên nhóm, mã lặp qua mảng chuỗi và gán mỗi tên nhóm cho đối tượng Lớp, được sử dụng trong phương thức Intent().
Khi tôi chạy mã này, danh sách được tạo nhưng khi tôi nhấp vào tên nhóm, nó luôn mở Wol.java, vị trí cuối cùng trong mảng chuỗi.
Tôi cần trợ giúp về logic, để khi tôi nhấp vào Arsenal, nó sẽ mở ra ars.class
Đây là mã.
public final int[] teams = { R.id.ars, R.id.ast, R.id.bir, R.id.bla,
R.id.blp, R.id.bol, R.id.che, R.id.eve, R.id.ful, R.id.hul,
R.id.lee, R.id.liv, R.id.mid, R.id.mnc, R.id.mnu, R.id.nor,
R.id.nwu, R.id.por, R.id.qpr, R.id.sto, R.id.sun, R.id.swa,
R.id.tot, R.id.wes, R.id.wig, R.id.wol };
//String array of teamnames, named to correspond their class name.
public final String[] teamnames = { "ars", "ast", "bir", "bla", "blp",
"bol", "che", "eve", "ful", "hul", "lee", "liv", "mid", "mnc",
"mnu", "nor", "nwu", "por", "qpr", "sto", "sun", "swa", "tot",
"wes", "wig", "wol" };
TextView tv;
Class classname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.m_transfers);
setTeamNames(); //Method sets up team names to a Class name.
for (int i = 0; i < teams.length; i++) {
tv = (TextView) findViewById(teams[i]);
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent open = new Intent(Transfers.this, classname);
startActivity(open);
}
});
}
;
}
public void setTeamNames() {
for (String s : teamnames) {
String name = "ttj.android.ft.teams." + s;
try {
classname = Class.forName(name);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
;
}
Bạn đang nghiêm túc nói rằng bạn đã tạo 20 Hoạt động khác nhau, một hoạt động cho mỗi nhóm? Tại sao không chỉ có một 'Activity' (được gọi là' TeamActivity' chẳng hạn) và chuyển tên nhóm thành một chuỗi 'Extra' trong' Intent' mà bạn sử dụng cho 'startActivity (...)'? – Squonk
Rất mới để phát triển android, vẫn nhận được đầu của tôi xung quanh Manifest. Có, tôi đã tạo 20 hoạt động riêng biệt trong tệp kê khai. Tôi có thể tạo TeamActivity trong tệp kê khai không? – tiptopjat
@tiptopjat Bạn có thể làm cho một TeamActivity trong tệp kê khai giống như cách bạn đã thực hiện 20 hoạt động khác nhau và sau đó, như MisterSquonk đã nói, chỉ cần thêm một chuỗi hoặc int vào Intent để phân biệt. – Tushar