Paging Compile Issue : Not sure how to convert a Cursor to this method's return type

为君一笑 提交于 2020-08-06 03:27:39

问题


I have been try to implemented the Paging Library with Room provided by google in Android Architecture Component.But its showing compile time error in my UserDao Class

Here is the Error:

Error:(22, 42) error: Not sure how to convert a Cursor to this method's return type

My Question is what return Type ?

UserDao.java

@Dao
public interface UserDao {
    @Query("SELECT * FROM user")
    LiveData<List<User>> getAll();

    //Compile Error is here : Not sure how to convert a Cursor to this method's return type
    @Query("SELECT * FROM user")
    LivePagedListProvider<Integer, User> userByPagination();

}

Here the UserModel.java

public class UserModel extends AndroidViewModel {

    private final UserDao userDao;

    public UserModel(Application application) {
        super(application);
        userDao = RoomDB.getDefaultInstance().userDao();
    }

    public LiveData<List<User>> getAllUser() {
        return userDao.getAll();
    }


    public LiveData<PagedList<User>> getAllUserPagination() {
        return userDao.userByPagination().create(
                /* initial load position */ 0,
                new PagedList.Config.Builder()
                        .setEnablePlaceholders(true)
                        .setPageSize(10)
                        .setPrefetchDistance(5)
                        .build());
    }
}

I have refer the following sample:

Sample 1

Google Doc

I have raised the issue HERE

Any help would be appreciated


回答1:


I resolved the issue by updating the libraries to the latest version

    compile 'android.arch.persistence.room:runtime:1.0.0-beta2'
    annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-beta2'
    compile 'android.arch.paging:runtime:1.0.0-alpha3'

    compile 'android.arch.lifecycle:runtime:1.0.0-beta2'
    compile 'android.arch.lifecycle:extensions:1.0.0-beta2'
    annotationProcessor 'android.arch.lifecycle:compiler:1.0.0-beta2'



回答2:


Use Version 2.3.0-alpha01

according to room release notes

Paging 3.0 Support: Room will now support generating implementations for@Query annotated methods whose return type is androidx.paging.PagingSource.

@Dao interface UserDao {
@Query("SELECT * FROM users ORDER BY id ASC")
   fun pagingSource(): PagingSource<Int, User>
}



回答3:


Try to use the following code:

@Query("select * from tbbook")
List<BookEntity> getBooks();

Do not try to change the return type. For example: ArrayList<BookEntity> getBooks();



来源:https://stackoverflow.com/questions/46668605/paging-compile-issue-not-sure-how-to-convert-a-cursor-to-this-methods-return

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!