我已经编辑了代码,现在空指针错误指向 for 循环内部,它们的错误比以前少,但我仍然不知道为什么调用空指针。
public class searchlist extends ListActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
new loadSomeStuff().execute();
}
public class loadSomeStuff extends AsyncTask<String, Integer, String[]>
{
ProgressDialog dialog;
protected void onPreExecute()
{
dialog = new ProgressDialog(searchlist.this);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMax(100);
dialog.show();
}
@Override
protected String[] doInBackground(String... arg0) {
// TODO Auto-generated method stub
for(int i =0; i<20; i++)
{
publishProgress(5);
try
{
Thread.sleep(80);
} catch(InterruptedException e)
{
e.printStackTrace();
}
}
dialog.dismiss();
int loops = search_page.returnlooped();
int[] teacup = search_page.returnNumArray();
sqlStuff searching = new sqlStuff(searchlist.this);
String[] IDSysNames = searching.getIDSysName();
searching.close();
String[] resultList = new String[loops];
for(int i=0; i < loops; i++ )
{
if(IDSysNames[teacup[i]] != null)
{
resultList[i].equals(IDSysNames[teacup[i]]);
}
}
setListAdapter(new ArrayAdapter<String>(searchlist.this, android.R.layout.simple_list_item_1, resultList));
return null;
}
protected void onProgressUpdate(Integer...progress)
{
dialog.incrementProgressBy(progress[0]);
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id){
//TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
//String Pos = resultList[position];
Intent ourIntent = new Intent("com.MC.ChemPal.RESULT2");
startActivity(ourIntent);
}
}
上面代码中使用的方法如下。
public String[] getIDSysName()
{
String[] result = new String[0];
try
{
String[] columns = new String[] {KEY_SYSNAME};
Cursor c = ChemPal.query(DATABASE_TABLE, columns, null, null, null, null, null);
Log.d("SqlDStuff", "Cursor count: "+c.getCount());
int iSysName = c.getColumnIndex(KEY_SYSNAME);
int i = 0;
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
i++;
}
result = new String[i];
i = 0;
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result[i] = c.getString(iSysName);
i++;
}
}
catch(Exception e)
{
}
return result;
}