gpt4 book ai didi

java - 获取位置并显示信息而不使用 if 语句?

转载 作者:行者123 更新时间:2023-11-30 02:07:20 25 4
gpt4 key购买 nike

我正在尝试使用预填充数据的 SQLite 数据库为 Android 开发一个应用程序。该应用程序就像一个有书籍的图书馆,当用户单击 ListView 时,下一个 Activity 将显示书籍的内容。我可以毫无问题地访问和显示数据,但代码变得相当大而且看起来不太好。每本书在 databasehelper 类中都有一个方法,在 if 语句中有一个相应的方法,该方法获取 ListView 中的位置并显示另一个 Activity 的相应信息。你可以想象这看起来不太好,我想知道是否有另一种方法可以做到这一点,也许有一种方法可以确定用户点击的位置,另一种方法可以从数据库中获取数据,而不是 20( 10书),我现在有。感谢所有帮助!

在用户点击 ListView 的 Activity 中编写代码。

 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 语句不是正确的方法,应该关闭游标,但这是一个测试应用程序,代码在最终版本中会略有不同)

用于在第三个 Activity 中显示数据的代码。

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);

最佳答案

为什么不将位置发送给函数?

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);
}

关于java - 获取位置并显示信息而不使用 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30488784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com