当前位置: 首页 > 知识库问答 >
问题:

在android中使用本地sqllite数据库中的数据填充Recyrerer视图

盖昊东
2023-03-14
ItemData.java

public class NatureItem {
    private String title;
    private int imageUrl;
    public NatureItem(String title,int imageUrl){
    this.title = title;
    this.imageUrl = imageUrl;
    }
    public String getTitle() {
    return title;
    }
    public void setTitle(String title) {
    this.title = title;
    }
    public int getImageUrl() {
    return imageUrl;
    }
    public void setImageUrl(int imageUrl) {
    this.imageUrl = imageUrl;
    }
}



CardAdapter.java

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {

     private NatureItem[] itemsData;

     public CardAdapter(NatureItem[] itemsData) {
     this.itemsData = itemsData;
     }

    // Create new views (invoked by the layout manager)
    @Override
    public CardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        // create a new view
        View itemLayoutView = LayoutInflater.from(parent.getContext())
                               .inflate(R.layout.list_cardview_activity, null);

        // create ViewHolder

        ViewHolder viewHolder = new ViewHolder(itemLayoutView);
        return viewHolder;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {

        // - get data from your itemsData at this position
        // - replace the contents of the view with that itemsData
        viewHolder.txtViewTitle.setText(itemsData[position].getTitle());
        viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl());


    }

    // inner class to hold a reference to each item of RecyclerView
    public static class ViewHolder extends RecyclerView.ViewHolder {

        public TextView txtViewTitle;
        public ImageView imgViewIcon;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);
            txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.blog_content);
            imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.imageView);
        }
    }


    // Return the size of your itemsData (invoked by the layout manager)
    @Override
    public int getItemCount() {
         return itemsData.length; 
    }
}



MainActivity.java

     NatureItem itemsData[] ={ 
                new NatureItem("imageName",R.drawable.image2),
                new NatureItem("imageName2",R.drawable.image2)              
        };

    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);       
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    mAdapter = new CardAdapter(itemsData);
    recyclerView.setAdapter(mAdapter);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
public class DatabaseHandler extends SQLiteOpenHelper {


    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_LOGIN + "("
                + KEY_ID + " INTEGER PRIMARY KEY,"
                + KEY_FIRSTNAME + " TEXT,"
                + KEY_LASTNAME + " TEXT,"
                + KEY_EMAIL + " TEXT UNIQUE,"
                + KEY_UID + " TEXT,"
                + KEY_CREATED_AT + " TEXT" + ")";
        db.execSQL(CREATE_LOGIN_TABLE);
    }



    /**
     * Getting user data from database
     * */
    public Cursor  getUserDetails(){
        HashMap<String,String> user = new HashMap<String,String>();
             String selectQuery = "SELECT  * FROM " + TABLE_LOGIN;

             SQLiteDatabase db = this.getReadableDatabase();
             Cursor cursor = db.rawQuery(selectQuery, null);
            if (cursor!=null){
                 user.put("fname", cursor.getString(1));
                 user.put("lname", cursor.getString(2));
                 user.put("email", cursor.getString(3));
                 user.put("uid", cursor.getString(4));
                 user.put("created_at", cursor.getString(5));
                cursor.moveToNext();
            }
            return cursor;
    }


    /**
     * Getting user status
     * return true if rows are there in table
     * */
    public int getRowCount() {
        String countQuery = "SELECT  * FROM " + TABLE_LOGIN;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        int rowCount = cursor.getCount();
        db.close();
        cursor.close();

        // return row count
        return rowCount;
    }


}

共有1个答案

龙凯
2023-03-14

我会建议使用Android加载器管理器,这是完美的目的,也是基于Android。

下面是一个很好的示例:

Android文档链接

 类似资料:
  • 问题内容: 我开始学习javaFX,我需要用数据库中的数据填充表。我在网上阅读了很多代码,但没有找到我想要的东西。我读了这篇文章,但不知道如何实现最后一个功能。我阅读了一些其他代码来做到这一点,到目前为止,这是我的一些代码: 我希望你能帮帮我 问题答案: 我相信这会为您提供帮助: 在控制器类中执行以下操作: 并为每个要使用TableView操纵的实体(表)创建一个单独的Java文件POJO 我已经

  • 问题内容: 我正在尝试使用我的Derby数据库数据填充Netbeans GUI-builder jTable。 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回其中包含参数数据和列的tableModel,因为我知道在GUI中执行此方法是一种不好的做法。在线上的所有教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它看不到数据和列,

  • 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回包含参数数据和列的tableModel,因为我知道在我的GUI中使用这种方法是不好的做法。所有在线教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它无法看到数据和列,因为它们是在我的方法的一个不可访问的部分中声明和使用的。在我完成这些之后,我需要找到一种方法来将它传递给我的GUI类

  • 简介 Laravel 可以用 seed 类轻松地为数据库填充测试数据。所有的 seed 类都存放在 database/seeds 目录下。你可以任意为 seed 类命名,但是更应该遵守类似 UsersTableSeeder 的命名规范。Laravel 默认定义的一个 DatabaseSeeder 类。可以在这个类中使用 call 方法来运行其它的 seed 类从而控制数据填充的顺序。 编写 See

  • 我习惯于使用Arraylist,下面您可以看到我为存储数据所做的尝试: 这就是我尝试过的,但遗憾的是,这并不奏效: 下面你可以找到我剩下的代码,但上面的一个应该足以让我清楚的想要做什么... } 我创建了Dao类,如下所示::- @DAO公共接口DeckBuilderDao{

  • 我知道这个问题已经问了100次了,但我还是没办法让它奏效。我希望TableView中充满存储在数据库中的内容。 我用一个空的TableView得到了我的FXML(这里的第一个问题:我应该已经设置列了吗?) 这就是我从数据库中获取数据并进入TableView的方法。我把som系统打印出来,检查它是否给了我正确的东西。问题是我在“tableview.getColums().addAll.col”中得到