【问题标题】:Is it possible to make CursorAdapter be set in recycleview, just like ListView?是否可以像 ListView 一样在 recycleview 中设置 CursorAdapter?
【发布时间】:2023-03-13 01:00:01
【问题描述】:

直到现在我还没有在我的项目中找到替换列表视图的解决方案,因为我需要使用与 sqlite 链接的光标。

旧方法如下: listview.setAdapter(cursorAdapter) 这样就可以得到游标来处理数据库中的数据了

但是现在,recycleview.setAdapter(recycleview.adapter) 它无法识别扩展 BaseAdapter 的适配器

所以有人可以帮帮我吗?

【问题讨论】:

标签: android android-recyclerview android-support-library


【解决方案1】:

自己实现其实很简单:

public class CursorAdapter extends RecyclerView.Adapter<ViewHolder>{

    Cursor dataCursor;

    @Override
    public int getItemCount() {
        return (dataCursor == null) ? 0 : dataCursor.getCount();
    }


    public void changeCursor(Cursor cursor) {
        Cursor old = swapCursor(cursor);
        if (old != null) {
          old.close();
        }
      }

     public Cursor swapCursor(Cursor cursor) {
        if (dataCursor == cursor) {
          return null;
        }
        Cursor oldCursor = dataCursor;
        this.dataCursor = cursor;
        if (cursor != null) {
          this.notifyDataSetChanged();
        }
        return oldCursor;
      }

    private Object getItem(int position) {
        dataCursor.moveToPosition(position);
        // Load data from dataCursor and return it...
      }

}

【讨论】:

  • 呃,我不是这个意思哥们,我确实后来在github上找到了一个项目,就是开发者自己实现了cursorAdapter。但是没那么容易,不知道会不会来出一个错误或一些意想不到的东西。所以出于自身能力和稳定性的考虑,还是等正式发布吧。
  • @machinezhou 我认为他们不会为其添加正式版本,到目前为止,这对我来说一直完美无缺
  • 我的感觉是,由于自 CursorLoader 以来他们一直在推动“UI 线程上没有数据库工作”的氛围,因此不会有正式的实现。无论如何,至于这里的解决方案,继续我见过的其他实现,您可能想要检查由移动光标或光标状态引起的潜在错误。到目前为止我看到的实现只是在这种情况下抛出异常,这对我来说似乎很不优雅。
  • 我很惊讶,但这个简单的解决方案对我来说完美无缺。
  • 尝试过并且在我获取日志时调用了 onBindViewHolder,但没有显示任何内容
【解决方案2】:

新的RecyclerView 与新的RecyclerView.Adapter 基类一起使用。 所以它不适用于CursorAdapter

目前RecyclerView.Adapter没有默认实现可用。

可能随着正式发布,谷歌会添加。

【讨论】:

  • 是的,我在github上找到了一个解决方案,但是正式版会在各个方面更好,我还是等等吧。
  • @machinezhou 可以分享一下github项目吗?
  • @josedlujan 这里是github项目的链接gist.github.com/skyfishjy/443b7448f59be978bc59
猜你喜欢
  • 2017-09-19
  • 2015-07-14
  • 1970-01-01
  • 2023-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
相关资源
最近更新 更多