我正在尝试使用预先填充数据的SQLite数据库为Android制作应用程序。该应用程序就像一个带有书籍的图书馆,当用户点击列表视图时,下一个活动会显示图书的内容。我可以访问数据并显示它没有问题,但代码变得非常大而且看起来不太好。每本书在databasehelper类中都有一个方法,在if语句中有一个相应的方法,它获取listview中的位置并在另一个活动上显示相应的信息。你可以想象这看起来并不好看,我想知道是否有另一种方法可以做到这一点,也许有一种方法可以确定用户点击的位置,另一种用于从数据库中获取数据,而不是20(10)我现在拥有的书籍。感谢所有帮助!
用户点击列表视图的活动中的代码。
public class MainActivity2Activity extends ActionBarActivity {
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0){
Cursor cursor = dbHelper.readBook();
StringBuilder sb = new StringBuilder();
while (cursor.moveToNext()) {
sb.append(cursor.getString(4) + "\n");
Intent i = new Intent(MainActivity2Activity.this,
Books.class);
i.putExtra(null, sb.toString());
startActivity(i);
}
}
else if (position == 1){
Cursor cursor = dbHelper.readBook2();
StringBuilder sb = new StringBuilder();
while (cursor.moveToNext()) {
sb.append(cursor.getString(4) + "\n");
Intent i = new Intent(MainActivity2Activity.this,
Books.class);
i.putExtra(null, sb.toString());
startActivity(i);
}
}
依此类推10本书
public class DatabaseHelper extends SQLiteOpenHelper {
public static String id = "1";
public static String id2 = "2";
public static String id3 = "3";
//and so on and so forth to ten id's...
//code to fetch info from the database.
public Cursor readBook(){
SQLiteDatabase db = this.getWritableDatabase();
String sql = "select * from " + TABLE_NAME+ "
where " + COL_ID + " = '" + id + "';";
return db.rawQuery(sql,null);
}
每本书都会继续。(我知道sql语句不是正确的方法,光标应该关闭,但这是一个测试应用程序,代码在最终版本中会略有不同)
用于在第三个活动中显示数据的代码。
public class Books extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_boken);
openBookLayout = (TextView)findViewById(R.id.openBookLayout);
String book = getIntent().getExtras().get(null).toString();
openBookLayout.setText(book);
答案 0 :(得分:1)
为什么不把位置发送到函数?
public Cursor readBook(String book) {
SQLiteDatabase db = this.getWritableDatabase();
String sql = "select * from " + TABLE_NAME+ "
where " + COL_ID + " = '" + book + "';";
return db.rawQuery(sql,null);
}
和
Cursor cursor = dbHelper.readBook(Integer.toString(position));
StringBuilder sb = new StringBuilder();
while (cursor.moveToNext()) {
sb.append(cursor.getString(4));
sb.append("\n");
Intent i = new Intent(MainActivity2Activity.this,
Books.class);
i.putExtra(null, sb.toString());
startActivity(i);
}