Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何在Recycle View游标适配器类中使用RecycleView.FindViewWholder进行适配器定位_Android_Cursor_Android Recyclerview - Fatal编程技术网

Android:如何在Recycle View游标适配器类中使用RecycleView.FindViewWholder进行适配器定位

Android:如何在Recycle View游标适配器类中使用RecycleView.FindViewWholder进行适配器定位,android,cursor,android-recyclerview,Android,Cursor,Android Recyclerview,我试图从循环视图中获取特定位置的视图持有者 我在MainActivity中通过这样做发现: viewHolderRec = recyclerViewInstance.findViewHolderForAdapterPosition(vHID); final RecyclerView recyclerView = findViewById(R.id.recycle_view); LinearLayoutManager manager = new LinearLayoutManag

我试图从循环视图中获取特定位置的视图持有者

我在MainActivity中通过这样做发现:

viewHolderRec = recyclerViewInstance.findViewHolderForAdapterPosition(vHID);
    final RecyclerView recyclerView = findViewById(R.id.recycle_view);
    LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(manager);
    recyclerView.setNestedScrollingEnabled(true);
    mCursorAdapter = new RecycleCursorAdapter(this, null, recyclerView);
    recyclerView.setAdapter(mCursorAdapter);
它在我的主要活动中运行良好

但是,当我尝试在我的循环视图游标适配器中实现相同的功能时,如下所示:

我已将光标更改为使用recycleview:

在我的主要活动中:

viewHolderRec = recyclerViewInstance.findViewHolderForAdapterPosition(vHID);
    final RecyclerView recyclerView = findViewById(R.id.recycle_view);
    LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(manager);
    recyclerView.setNestedScrollingEnabled(true);
    mCursorAdapter = new RecycleCursorAdapter(this, null, recyclerView);
    recyclerView.setAdapter(mCursorAdapter);
在RecycleCursorAdapter中:

RecyclerView recyclerViewInstance;

public RecycleCursorAdapter(Context context, Cursor cursor, RecyclerView recyclerView) {
    super(context, cursor);
    recyclerViewInstance = recyclerView;
}
 @Override
public void onBindViewHolder(ChatCursorAdapter3.ViewHolder viewHolder, Cursor cursor) {
    ChatListItem myListItem = ChatListItem.fromCursor(cursor);
    int vHID = viewHolder.getAdapterPosition();

    viewHolderRec = (ViewHolder) recyclerViewInstance.findViewHolderForAdapterPosition(vHID - 1);
}
但是viewHolderRec为空

我想获取视图的viewholder,它位于当前viewholder之上

我只是想知道我怎样才能让它工作。 我想要的是在我的循环视图光标适配器中使用FindViewWholderForAdapterPosition方法

是的,我知道我可以用

viewHolder.getOldPosition()
但它不能满足我在滚动循环视图时的需要


提前感谢:-

我搜索了很多,找到了它,而不是使用RecycleServiceInstance.findViewHolder for AdapterPositionvhid-1

我可以通过将视图持有者存储在如下列表中找到任何位置的视图持有者

就像我需要做的那样

但是,我知道当列表非常大时,这会影响大量内存。 因此,我所做的是从内存中删除当前不可见的ViewHolder

为此,我得到了显示像素SDP中的高度,并由此得到了可见项目的数量。并删除所有其他视图保持架

这个把戏对我有用。可能这将有助于某人,所以我张贴这个答案