遵循我的代码,从数据库向listview显示数据。但是它不起作用并使我的应用程序崩溃。请为我的这个问题提供完美的解决方案。
我的代码......
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.deletestudent);
// DisplayStudent();
ArrayList<String > arrlst=new ArrayList<String>();
ListView lst_stu=(ListView) findViewById(R.id.ListView01);
db.open();
Cursor cur=db.GetStudent();
for (int i=0;i<cur.getCount();i++)
{
cur.moveToFirst();
String stunm=cur.getString(1);
arrlst.add(1, stunm);
lst_stu.setAdapter((ListAdapter) arrlst);
db.close();
}
}
答案 0 :(得分:2)
for (int i=0;i<cur.getCount();i++)
{
cur.moveToFirst();
String stunm=cur.getString(1);
arrlst.add(1, stunm);
lst_stu.setAdapter((ListAdapter) arrlst);
db.close();
}
问题是你在第一次迭代中关闭了光标。
为我的这个问题提供完美的解决方案。
你看起来像我的老板,除非他每小时支付20美元......
无论如何,你的代码中有很多不好的东西,主要是因为你不明白游标是如何工作的:
moveToFirst
?它对你有用吗?CursorAdapter
?答案 1 :(得分:1)
请尝试以下代码
try
{
Cursor cursor = null;
db.OpenDatabase();
cursor = db.GetStudent();
// Here if condition check wheather the cursor returns record or not.
// If cursor has some records then it will return non zero number .
if (cursor.getCount() != 0)
{
// Here if condition check wheather the cursor move to first record or not
// If it moves to first record then it will return true.
if (cursor.moveToFirst())
{
do
{
arrlst.add(cursor.getInt(cursor.getColumnIndex("your_field_in_database")).trim());
}while (cursor.moveToNext());
}
}
cursor.close();
db.closeDatabase();
lst_stu.setAdapter((ListAdapter) arrlst);
}
catch(Exception e)
{
e.printStackTrace();
}