【发布时间】:2020-01-27 09:01:08
【问题描述】:
我有一个 SQLite 数据库,我想使用 ListView 显示每个 ROW/Campsite。
DBHandler 方法返回营地的 ArrayList:
public ArrayList<Campsite> getAllCampsites() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_CAMPSITES, null);
ArrayList<Campsite> campsites = new ArrayList<>();
Campsite campsite;
if (cursor.getCount() > 0) {
for (int i = 0; i < cursor.getCount(); i++) {
cursor.moveToNext();
campsite = new Campsite();
campsite.setName(cursor.getString(1));
campsite.setCity(cursor.getString(2));
campsite.setFeature(cursor.getString(3));
campsite.setFavorite(cursor.getString(4));
campsite.setRating(cursor.getInt(5));
campsite.setLatitude(cursor.getDouble(6));
campsite.setLongitude(cursor.getDouble(7));
campsites.add(campsite);
}
}
cursor.close();
db.close();
return campsites;
}
我有一个名为 Browse 的活动,它在布局文件中有 ListView。我还有一个browse_row_layout,它具有一行/露营地的布局。
所以在 Browse.java 中我需要创建适配器来显示每个露营地。 注意:我只在列表视图中显示 3 个特定列(名称、城市、功能)
所以我有 activity_browse 布局文件,它具有实际的 ListView 元素和代表数据库的 1 行的browse_row_layout,并且只有 3 列的 TextViews。
到目前为止我所拥有的:
import android.os.Bundle;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
public class Browse extends AppCompatActivity {
ListView lvCampsites;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_browse);
lvCampsites= findViewById(R.id.lvCampsites);
DatabaseHandler db = new DatabaseHandler(this);
ArrayList<Campsite> campsites = db.getAllCampsites();
}
}
TLDR:如何使用 ListView 创建一个适配器来显示包含数据库每一行的露营地列表中的每个露营地。
【问题讨论】:
-
这可能会有所帮助guides.codepath.com/android/…
-
有什么具体的需要用listview,什么时候可以用RecyclerView
-
没有特殊需要,不过我读过它。它会改变我显示数据的方式吗?
-
您的数据没有什么特别之处,只需使用您在 google 上找到的任何 自定义列表视图适配器 教程即可。
-
另外,请使用
android-studio标签仅针对特定于 IDE 的问题。
标签: java android sqlite listview