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

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

我想制作一個 recyclerview,將數據顯示到 SQLITE 數據庫中的新活動

我想制作一個 recyclerview,將數據顯示到 SQLITE 數據庫中的新活動

斯蒂芬大帝 2023-03-09 10:50:46
我正在做一個項目,我有一個包含 id、標題、內容的 sqlite 數據庫能夠從數據庫中讀取內容。希望我的問題很清楚!謝謝。這是我的 DatabaseHelper 類DatabaseHelper.javapublic class DatabaseHelper extends SQLiteOpenHelper {public static final String DBNAME = "alQais.db";private Context context;private SQLiteDatabase sqLiteDatabase;public DatabaseHelper(Context mContext){    super(mContext, DBNAME, null, 1);    this.context = mContext;}@Overridepublic void onCreate(SQLiteDatabase db) {}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}public void openDatabase(){    String dbPath = context.getDatabasePath(DBNAME).getPath();    if(sqLiteDatabase != null && sqLiteDatabase.isOpen()){        return;    }    sqLiteDatabase = SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.OPEN_READWRITE);}public void closeDatabase(){    if(sqLiteDatabase != null){        sqLiteDatabase.close();    }}public ArrayList getAllTitles(){    ArrayList arrayList = new ArrayList();    openDatabase();    Cursor cursor = sqLiteDatabase.rawQuery("select * from muallaqat", null);    cursor.moveToFirst();    while (!cursor.isAfterLast()){        arrayList.add(cursor.getString(cursor.getColumnIndex("title")));        cursor.moveToNext();    }    cursor.close();    closeDatabase();    return arrayList;}public String getMuallaqa(String title){    String muallaqat;    openDatabase();    Cursor cursor = sqLiteDatabase.rawQuery("select * from muallaqat where title like '" + title + "'", null);    cursor.moveToFirst();    muallaqat = cursor.getString(cursor.getColumnIndex("muallaqa"));    cursor.close();    closeDatabase();    return muallaqat;}}
查看完整描述

3 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

供參考遵循步驟


1)例如為id、title、content創建setter和getter方法


public class settter 

 {


int id;

String name;

String content;


public int getId() {

    return id;

}


public void setId(int id) {

    this.id = id;

}


public String getName() {

    return name;

}


public void setName(String name) {

    this.name = name;

}


public String getContent() {

    return content;

}


public void setContent(String content) {

    this.content = content;

   }

 }

2)在xml mainactivity中添加recyclerview


<androidx.recyclerview.widget.RecyclerView

    android:id="@+id/recycler_view"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

     />

3)在 MainActivity 中刪除所有 listview 相關代碼并添加下面給出的代碼


 RecyclerView recyclerView=(RecyclerView)findViewById(R.id.recycler_view2);

    recyclerView.setLayoutManager(new LinearLayoutManager(this));


        //make array list object with setter class

        ArrayList<setter> name =db.getAllTitles();


       //new adapter(ArrayList<setter>, context) ,so initiate adapter

        recyclerView.setAdapter(new adapter(name,getApplicationContext()));


        //draw line 

        recyclerView.addItemDecoration(new 

     DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL));

4)創建布局文件來保存你的數據并在recyclerview中膨脹


名稱:recycler_content_holder.xml


<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="50dp"

android:orientation="vertical">

<LinearLayout

    android:layout_width="match_parent"

    android:layout_height="50dp"

    android:id="@+id/recycler_content_holder"

    >

    <TextView

        android:layout_width="50dp"

        android:layout_height="match_parent"

        android:gravity="center"

        android:id="@+id/tv_id"/>

    <TextView

        android:layout_width="100dp"

        android:layout_height="match_parent"

        android:layout_marginLeft="30dp"

        android:id="@+id/tv_title"

        android:gravity="center"/>


    <TextView

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_marginLeft="30dp"

        android:gravity="center|right"

        android:id="@+id/tv_content"/>

</LinearLayout>

5)創建適配器類


public class adapter extends RecyclerView.Adapter<adapter.AdapterViewHolder>

{


ArrayList<settter> data;

Context context;

public adapter(ArrayList<settter> data,Context context)

{

    this.data=data;

    this.context=context;

}


@NonNull

@Override

public AdapterViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)

{

    LayoutInflater layoutInflater=LayoutInflater.from(viewGroup.getContext());

    View view=layoutInflater.inflate(R.recycler_content_holder,viewGroup,false);

    return new ProgramingViewHolder(view);



}


@Override

public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i)

{


    viewHolder.id.setText(""+data.get(i).getId());

    viewHolder.title.setText(data.get(i).getTitle());

    viewHolder.content.setText(data.get(i).getContent());


    viewHolder.linearLayout.setOnClickListener(new View.OnClickListener()

    {

        @Override

        public void onClick(View v)

        {


            String title = String.valueOf(data.get(i).getTitle());

            Intent intent = new Intent(context, Main2Activity.class);

            intent.putExtra("title", title);

            startActivity(intent);


        }

    });




}


@Override

public int getItemCount() {

    return data.size();

}


//class programingViewHolder

public class AdapterViewHolder extends RecyclerView.ViewHolder

{

    TextView id,title,content;

    LinearLayout linearLayout;


    public AdapterViewHolder(@NonNull View itemView) {

        super(itemView);

        id=(TextView)itemView.findViewById(R.id.tv_id);

        title=(TextView)itemView.findViewById(R.id.tv_mtrNo);

        content=(TextView)itemView.findViewById(R.id.tv_nm);

        linearLayout=(LinearLayout)itemView.findViewById(R.id.recycler_content_holder);


    }



  }

 }

6) DatabaseHelper 中的更改方法


public ArrayList<setter> getAllTitles(){

    ArrayList<setter> arrayList = new ArrayList();

    openDatabase();

    setter set=new setter();

    Cursor cursor = sqLiteDatabase.rawQuery("select * from muallaqat", null);

    cursor.moveToFirst();

    while (!cursor.isAfterLast()){

        set.setTitle(cursor.getString(cursor.getColumnIndex("title")));

        //add object to arralist

        arrayList.add(set);

        cursor.moveToNext();

    }

    cursor.close();

    closeDatabase();

    return arrayList;

}

只需復制粘貼即可理解,希望對您有所幫助。


查看完整回答
反對 回復 2023-03-09
?
12345678_0001

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

如果我理解正確的話,您想對來自 SQLite 數據庫的數據使用 recyclerview 嗎?當您單擊某個項目并使用該項目的數據填充它時,您想打開一個新活動嗎?看看這篇文章

RecyclerView 與 Cursor Adapter 的實現


查看完整回答
反對 回復 2023-03-09
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

只需做一件事,從數據庫中獲取 id 和標題,并在 recyclerview 中顯示標題。并且當 onItemClick onItemClick on recyclerview 將特定位置的 id 傳遞給下一個活動。

并在下一個活動中獲取從上一個活動傳遞的 id。

并從帶有 id 的數據中獲取數據。您將獲得所有數據。

并將獲取的數據顯示給活動。



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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