为了账号安全,请及时绑定邮箱和手机立即绑定

我想制作一个 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 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信