Я читал данные из базы данных и сохранялся в списке массивов, а затем в listview. Но когда я добавлю список, он покажет сообщение об ошибке, как показано ниже в logcat. У меня уже есть данные в списке массивов. Но посмотрите, как система присваивает список массива в listview до или во время соединения/выполнения sql. Таким образом, данные могут еще не присваивать список массива, но система уже выполняет следующий элемент, потому что, когда я удаляю оператор listview, он может работать. Почему так. Я новичок в Android.Android назначает данные listview
Ошибка: Вызванный: java.lang.IndexOutOfBoundsException: Недопустимый индекс 0, размер 0
Код:
private ListView listView1;
private ArrayList<String> arrData = new ArrayList<String>();
private Campaign campaign_data[] = new Campaign[]{};
private Integer intData=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_act_performace);
//connect to db and get data
ConnectTask dt = new ConnectTask();
dt.execute();
//display data in listview
camp mydata[] = new camp []
{
new camp (R.drawable.empty, "Today:"+ arrData.get(0)),
new camp (R.drawable.empty, "This Month:"+ arrData.get(1))
};
CampAdapter adapter = new CampAdapter (this,R.layout.listview_header_row, mydata);
listView1 = (ListView) findViewById(R.id.listView1);
listView1.setAdapter(adapter);
}
class ConnectTask extends AsyncTask<Integer, Integer, String>
{
Connection con = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Integer... params) {
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con = DriverManager.getConnection("jdbc:jtds:sqlserver://192.168.1.2/test;instance=SQLEXPRESS;user=inc;password=123456789");
testConnection(con);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
public void testConnection(Connection con) throws java.sql.SQLException {
try {
String sql = "SELECT colA FROM test";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
arrData.add(rs.getString("colA").toString());
intData=intData+1;
}
}
Когда я перехожу к onPostExecute, выдается ошибка. Ошибка: это, R.layout.listview_header_row, campaign_data не может применяться к ожидаемому фактическому ... – ckcheah