亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 ListView 顯示 SQLite 數據庫行的 ArrayList

使用 ListView 顯示 SQLite 數據庫行的 ArrayList

楊__羊羊 2023-09-06 16:13:52
我有一個 SQLite 數據庫,我想使用 ListView 顯示每個 ROW/Campsite。DBHandler 方法返回 Campsites 的 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;}我有一個名為“瀏覽”的活動,它在布局文件中包含 ListView。我還有一個 browser_row_layout ,它具有一行/露營地的布局。因此,在 Browse.java 中,我需要創建適配器來顯示每個露營地。注意:我僅在列表視圖中顯示 3 個特定列(名稱、城市、功能)因此,我有 Activity_browse 布局文件,其中包含實際的 ListView 元素和 browser_row_layout,它代表數據庫的 1 行,并且僅包含其中 3 列的 TextView。到目前為止我所擁有的:import android.os.Bundle;import android.widget.ListView;import androidx.appcompat.app.AppCompatActivity;import java.util.ArrayList;public class Browse extends AppCompatActivity {ListView lvCampsites;@Overrideprotected 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 創建一個適配器來顯示露營地列表中的每個露營地,其中包含數據庫的每一行。
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

創建一個擴展 BaseAdapter 的自定義適配器類,然后實現方法,然后在 getView 方法中將布局 id 傳遞給視圖,以便您可以訪問布局文件中的 textview。


public class CampsitesListAdapter extends BaseAdapter {


    private Context mContext;

    private ArrayList<Campsites> list;


    public CampsitesListAdapter(Context mContext , List<Campsites> countries) {

        this.mContext = mContext;

        this.list = countries;

    }


    @Override

    public int getCount() {

        return list.size();

    }


    @Override

    public Object getItem(int position) {

        return list.get(position);

    }


    @Override

    public long getItemId(int position) {

        return position;

    }


    @Override

    public View getView(int position, View convertView, ViewGroup parent) {


        View view = View.inflate(mContext, R.layout.campsite_layout , null );

        TextView name = (TextView) view.findViewById(R.id.nametxt);

        Textview city = (Textview) view.findViewById(R.id.citytxt);

        Textview feature = (Textview) view.findViewById(R.id.featuretxt);


        name.setText(list.get(position).getname());

        city.setText(list.get(position).getcity());

        feature.setText(list.get(position).getfeature());


        return view;

    }

 }

這是您的列表視圖活動


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


    //Instance of custom adapter 

    CampsitesListAdapter adapter = new CampsitesListAdapter(this ,   campsites);

   //Setting adapter to listview

   lvCampsites.setAdapter(adapter);

}

我希望這可以幫助你。


查看完整回答
反對 回復 2023-09-06
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

您需要先移動光標。參考下面的代碼:


                         if (cursor!=null && cursor.getCount()> 0){

                            cursor.moveToFirst();

                            do{

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


                            }while(cursor.moveToNext);

                        }


查看完整回答
反對 回復 2023-09-06
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號