我正试图从循环视图中获取特定位置的视图。
我发现这样做是通过在MainActivity中执行此操作:
Out[41]:
array([[(0, 0, 0, 0.0, 0.0), (1, 1, 1, 1.0, 1.0), (2, 2, 2, 2.0, 2.0),
(3, 3, 3, 3.0, 3.0), (4, 4, 4, 4.0, 4.0)],
[(5, 5, 5, 5.0, 5.0), (6, 6, 6, 6.0, 6.0), (7, 7, 7, 7.0, 7.0),
(8, 8, 8, 8.0, 8.0), (9, 9, 9, 9.0, 9.0)],
[(10, 10, 10, 10.0, 10.0), (11, 11, 11, 11.0, 11.0),
(12, 12, 12, 12.0, 12.0), (13, 13, 13, 13.0, 13.0),
(14, 14, 14, 14.0, 14.0)],
[(15, 15, 15, 15.0, 15.0), (16, 16, 16, 16.0, 16.0),
(17, 17, 17, 17.0, 17.0), (18, 18, 18, 18.0, 18.0),
(19, 19, 19, 19.0, 19.0)],
[(20, 20, 20, 20.0, 20.0), (21, 21, 21, 21.0, 21.0),
(22, 22, 22, 22.0, 22.0), (23, 23, 23, 23.0, 23.0),
(24, 24, 24, 24.0, 24.0)]],
dtype=[('width', '<i4'), ('height', '<i4'), ('depth', '<i4'), ('score', '<f4'), ('auc', '<f4')])
在我的MainActivity中运行良好。
但是,当我尝试在我的循环视图游标适配器中实现相同的内容时:
我已将光标更改为采用recycleview:
在我的MainActivity中:
viewHolderRec = recyclerViewInstance.findViewHolderForAdapterPosition(vHID);
在RecycleCursorAdapter中:
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);
但是viewHolderRec为空。
我想获取当前viewHolder之上的视图的视图。
我只是想知道如何让它发挥作用。 我想要的是在我的循环视图游标适配器中使用findViewHolderForAdapterPosition()方法。
是的,我知道我可以使用
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);
}
但在滚动循环视图时,它无法满足我的需求。
提前致谢: - )
答案 0 :(得分:0)
我经常搜索并发现,而不是使用recyclerViewInstance.findViewHolderForAdapterPosition(vHID - 1);
我可以通过将视图存储在List&lt;&gt;中来查找任何位置的视图。喜欢
List<ViewHolder> vList = new ArrayList<>();
每当我想要观察者的任何可能性时,我都可以找到
int vHID = viewHolder.getAdapterPosition();
viewHolderRec = vList.get(vHID - 1);
正如我需要做的那样。
但是,我知道当列表非常大时,这会影响很多内存。 所以我所做的就是从内存中删除目前看不到的视图。
为此,我得到显示像素(dp)的高度,并通过它得到可见项目的数量。并删除所有其他视图。
这个技巧对我有用。可能这对某人有帮助,所以我发布了这个答案。