下面的代码有问题。 它应该做的是获取arrDBNumbers中的数字并使用这些数字用6个不同的图像填充listview。 arrDBNumbers已满,并且经过int a -f它们被填充,但是在
hm.put("flag1", Integer.toString(balls[a]) );
一切都挂了????它不会超过这个,我得到一个超出界限的数组索引
public class ResLotto extends Activity {
int[][] arrDBNumbers = new int[100][8];
String[] arrDBNumbersS = new String[60];
String st0, st1, st2, st3, st4, st5, st6, st7, st8, st9, st10, st11, st12, st13, st14, st15, st16, st17, st18, st19, st20, st21, st22, st23, st24, st25, st26, st27, st28, st29;
private DownloadWebPageTask mTask = null;
private final static String Array="LottoArray.txt";
final Context context = this;
int[] balls = new int[]{R.drawable.b1, R.drawable.b2, R.drawable.b3, R.drawable.b4, R.drawable.b5, R.drawable.b6, R.drawable.b7, R.drawable.b8, R.drawable.b9,
R.drawable.b10, R.drawable.b11, R.drawable.b12, R.drawable.b13, R.drawable.b14, R.drawable.b15, R.drawable.b16, R.drawable.b17, R.drawable.b18, R.drawable.b19,
R.drawable.b20, R.drawable.b21, R.drawable.b22, R.drawable.b23, R.drawable.b24, R.drawable.b25, R.drawable.b26, R.drawable.b27, R.drawable.b28, R.drawable.b29,
R.drawable.b30, R.drawable.b31, R.drawable.b32, R.drawable.b33, R.drawable.b34, R.drawable.b35, R.drawable.b36, R.drawable.b37, R.drawable.b38, R.drawable.b39,
R.drawable.b40, R.drawable.b41, R.drawable.b42, R.drawable.b43, R.drawable.b44, R.drawable.b45, R.drawable.b46, R.drawable.b47, R.drawable.b48, R.drawable.b49,
};
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.activity_res_lotto);
RelativeLayout rel = (RelativeLayout)findViewById(R.id.baseLayer);
rel.setBackgroundColor(Color.WHITE);
if ( customTitleSupported ) {
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
}
final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
File fileArray = getBaseContext().getFileStreamPath(Array);
if(fileArray.exists()) {
try {
InputStream in=openFileInput(Array);
if (in!=null) {
InputStreamReader tmp=new InputStreamReader(in);
BufferedReader reader=new BufferedReader(tmp);
String str;
while ((str = reader.readLine()) != null) {
for (int i = 0; i < 52; i++){
for (int j = 0; j < 8; j++){
arrDBNumbers[i][j] = Integer.parseInt(str);
str = reader.readLine();
}
}
}
in.close();
}
}
catch (java.io.FileNotFoundException e) {
Toast
.makeText(this, "Error opening database file", Toast.LENGTH_LONG)
.show();
}
catch (Exception e) {
}
try {
StringBuffer buf = new StringBuffer(String.valueOf(arrDBNumbers[0][0]));
if (buf.length() == 7)
buf.insert(0, "0");
buf.insert(4, "/");
buf.insert(2, "/");
myTitleText.setText("Lotto, Last updated: " + buf);
myTitleText.setTextColor(Color.WHITE);
} catch (Exception e) {
Toast
.makeText(this, "Error reading date to title", Toast.LENGTH_LONG)
.show();
}
loadListBox();
}
else if (!(fileArray.exists())){
myTitleText.setText("Lotto, Last updated: Never");
myTitleText.setTextColor(Color.WHITE);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setTitle("First time use!");
alertDialogBuilder.setMessage("Data will now be downloaded to populate grid");
alertDialogBuilder.setCancelable(false).setNegativeButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
checkconnection();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
private void loadListBox(){
List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();
for(int i = 0; i < 50; i++){
a = arrDBNumbers[i][1];
b = arrDBNumbers[i][2];
c = arrDBNumbers[i][3];
d = arrDBNumbers[i][4];
e = arrDBNumbers[i][5];
f = arrDBNumbers[i][6];
HashMap<String, String> hm = new HashMap<String,String>();
hm.put("flag1", Integer.toString(balls[a]) );
hm.put("flag2", Integer.toString(balls[b]) );
hm.put("flag3", Integer.toString(balls[c]) );
hm.put("flag4", Integer.toString(balls[d]) );
hm.put("flag5", Integer.toString(balls[e]) );
hm.put("flag6", Integer.toString(balls[f]) );
aList.add(hm);
}
String[] from = { "flag1","flag2","flag3","flag4","flag5","flag6" };
int[] to = { R.id.ivB1,R.id.ivB2,R.id.ivB3,R.id.ivB4,R.id.ivB5,R.id.ivB6};
SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.results_row, from, to);
ListView listView = ( ListView ) findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
下面的代码可以工作,并在列表视图中放入6个图像。但他们所有相同的图像1 - 6重复。
List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();
for(int i = 0; i < 50; i++){
HashMap<String, String> hm = new HashMap<String,String>();
hm.put("flag1", Integer.toString(balls[1]) );
hm.put("flag2", Integer.toString(balls[2]) );
hm.put("flag3", Integer.toString(balls[3]) );
hm.put("flag4", Integer.toString(balls[4]) );
hm.put("flag5", Integer.toString(balls[5]) );
hm.put("flag6", Integer.toString(balls[6]) );
aList.add(hm);
}
String[] from = { "flag1","flag2","flag3","flag4","flag5","flag6" };
int[] to = { R.id.ivB1,R.id.ivB2,R.id.ivB3,R.id.ivB4,R.id.ivB5,R.id.ivB6};
SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.results_row, from, to);
ListView listView = ( ListView ) findViewById(R.id.listView1);
listView.setAdapter(adapter);
有谁知道出了什么问题? 我试过了
hm.put("flag1", String.valueOf(balls[a]) );
hm.put("flag1", balls[a].toString() );
提前致谢T