Articles of android recyclerview

RecyclerView项目中的Android百分比屏幕宽度

如何将RecyclerView的项目高度设置为屏幕高度的30%? 我不能简单地使用ConstraintLayout或PercentFrameLayout / PercentRelativeLayout,因为那些位置子布局相对于父布局,其大小可能与屏幕不匹配。 我希望在纯XML中执行此操作(并且不必使用任何Runnables来动态获取屏幕高度)。 编辑 澄清一下,由于许多解决方案建议限制RecyclerView的高度,这不是意图。 RecyclerView仍应填充屏幕。 这就是我所说的,使用屏幕宽度(而不是高度): 我们的想法是将卡的宽度设置为屏幕宽度的33% ,同时保持RecyclerView的宽度不变,因为它横向滚动屏幕。

RecycerView直到滚动后才显示

在滚动之前,我有一个不显示任何元素的回收器视图。 一旦我滚动它,任何完全在屏幕外的项目都会显示,但任何未完成的项目都不会显示。 片段类: public class ImageAndNavHeaderFragment extends Fragment { private NetworkImageView mBackgroundImage; private RecyclerView mScrollingTextNavBar; private ScrollingTextNavBarAdapter mScrollingBarAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.image_and_nav_header, container, false); mBackgroundImage = (NetworkImageView) view.findViewById(R.id.bgImage); mBackgroundImage.setImageUrl(“http://crookedcreekguides.com/wp-content/uploads/2016/01/dinner-03.jpg”, VolleySingleton.getInstance(getContext()).getImageLoader()); mScrollingTextNavBar = (RecyclerView) view.findViewById(R.id.scrollTextNavBar); LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); mScrollingTextNavBar.setLayoutManager(layoutManager); ArrayList list = new […]

Android Recyclerview预加载视图

我想知道当用户滚动得更快时,我怎么能避免回收者视图中的小白色“闪烁”。 当然可以通过在可见屏幕之外预加载更多视图来避免闪烁 我找不到任何可以做到的事情,虽然这一定是一个非常常见的任务? 我在博客上试过这段代码: public class PreCachingLayoutManager extends LinearLayoutManager { private static final int DEFAULT_EXTRA_LAYOUT_SPACE = 600; private int extraLayoutSpace = -1; private Context context; public PreCachingLayoutManager(Context context) { super(context); this.context = context; } public PreCachingLayoutManager(Context context, int extraLayoutSpace) { super(context); this.context = context; this.extraLayoutSpace = extraLayoutSpace; } public PreCachingLayoutManager(Context context, int orientation, boolean reverseLayout) […]

Android – 如何为RecyclerView添加虚线/点线分隔线?

我已经使用了这个答案中的代码为我的RecyclerView创建了一个固体分隔线。 但是,我希望这条线是虚线/点线。 我已经有一个line_dashed.xml资源,我在我的应用程序的其他地方使用: 但是,如果我尝试将其应用为通过调用recyclerView.addItemDecoration(new SimpleDividerItemDecoration(getContext()))而访问的可绘制资源,则根本不会绘制任何行。 如何解决如此虚线?

为Firebase RecyclerView添加触摸侦听器

我尝试使用firebase向recyclerview添加“on touch”监听器,但无法成功完成。 谁能帮我? DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); DatabaseReference a = ref.child(“ufile”).child(unique_id).child(“Files”); final FirebaseRecyclerAdapteradapter = new FirebaseRecyclerAdapter(usersinfo.class,android.R.layout.two_line_list_item,MessageViewHolder.class,a) { @Override protected void populateViewHolder(MessageViewHolder viewHolder, usersinfo model, int position) { viewHolder.mtext.setText(model.username); } }; rvdb.setAdapter(adapter); public static class MessageViewHolder extends RecyclerView.ViewHolder { TextView mtext; public MessageViewHolder(View itemView) { super(itemView); mtext = (TextView) itemView.findViewById(android.R.id.text1); } } public void retriveinfo(String username, […]

如何在NestedScrollView中使用RecyclerView创建ViewPager

我在ViewPager中使用NestedScrollView。 NestedScrollView里面有一个LinearLayout,最后有一些TextViews,TabLayout和ViewPager。 TextViews占据了大部分空间,并为ViewPager留下了一点空间。 ViewPager使用两个片段,其中一个有几个TextViews和ImageViews,另一个片段中有一个RecyclerView。 当我将ViewPager的高度设置为WRAP_CONTENT它只占用空间,我无法滚动查看第一个片段的其余部分,以及第二个片段scoll里面的小ViewPager。 例如,当我将ViewPager的高度设置为1000dp时,我可以向下滚动第一个片段,但第二个片段仍在小型ViewPager中滚动。 之后我在第一个片段中使用RecyclerView scoll滚动片段不再工作了。 如何修复滚动问题并使ViewPager与WRAP_CONTENT一起WRAP_CONTENT ? 这是我的代码:

垂直ScrollView内的水平RecyclerView

所以我在垂直ScrollView中有一个水平的RecyclerView。 布局中的所有内容都显示得很好,并且都按照我想要的方向滚动,并且顺利完成。 我唯一的问题是,RecyclerView低于ScrollView中的其他内容,当RecyclerView部分可见时,它会在启动时将RecyclerView的底部与屏幕底部对齐。 这意味着RecyclerView上方的内容将被推离屏幕。 有谁知道为什么会这样,以及我如何解决它? 这是一个简单的布局,完成了我刚才描述的内容。 您甚至不需要填充RecyclerView,它仍然会这样做。

在Android中构建无限可滚动日历的视图

这不是代码问题,我将指南解释为正常。 我一直在研究在Android中构建无限滚动的日历视图的方法,但我已陷入僵局。 现在我的困境是,大多数类似的观点都让他们的孩子以反复的方式相互放置。 我的意思是: 项目4在项目3之后,在项目2之后,并且在所有项目之间存在持续的填充/边距 。 我需要的是一种生成无限长可滚动视图的方法,该视图可能包含也可能不包含项目。 这些项目应放置在视图中的可变位置。 我可以描述类似外观视图的最佳方式是可以无限滚动的为期一天的日历视图 。 到目前为止,我最好的两个赌注是使用新的RecyclerView和一个自定义的LayoutManager (这看起来非常复杂,但仍未完全由Google记录)。 我喜欢这种方法,因为除了其他方面,它还针对在有限视图中显示大型集合进行了优化。 我的另一个解决方案是构建一个完全自定义的View 。 但是,使用该解决方案,我松开了适配器,除非我构建容器视图(这可能比构建布局管理器更复杂)。 你会如何解决这样的问题? 提示很感激,我不需要代码示例,只是想法哪条路径是最好的解决这个问题。 谢谢。 如果我误解了指导方针,请道歉 编辑:我如何解决这个问题我的第一个使用RecyclerView与一个特殊的装饰器的解决方案似乎很有希望,但它仍然是一个“黑客”,所以我们决定不去寻找那个解决方案,因为我们害怕它会产生的复杂性。 为了解决这个问题,我使用了SurfaceView而不是Adapter,这意味着必须为SurfaceView重写所有适配器function,但这似乎是解决这个非常自定义绘图和布局管理问题的最佳方法 – 案件。 构建一个可以处理这种布局问题的自定义Viewgroup仍然会很不错。

Recyclerview视图可以更改其他适配器位置(非当前位置)的视图?

我有一个带有媒体播放器的recyclerview,可以在每一行播放一首歌。 我只有一个播放/停止按钮,可以改变符号。 这是我的问题: 示例1(这很好): (对于适配器位置1),用户点击播放符号并播放该适配器位置的音乐,并且符号变为停止符号,然后他们点击停止符号并且音乐停止并且符号变回准备开始的播放符号音乐又来了。 例2(这是问题) (对于适配器位置1),用户点击播放符号并播放该适配器位置的音乐,并且符号变为停止符号。 如果没有再按下该按钮,他们就会点击播放符号(适配器位置3),所以现在他们正在尝试同时播放位置1和3上的歌曲。 我已经修复了同时播放的两首歌曲,以便在按下第二首歌曲时重置播放的媒体并将源歌曲文件更改为新歌曲(一次只播放一首歌曲)。 即使媒体播放器表现得如此,问题仍然存在。 媒体播放器在主要活动中受到控制。 播放/停止按钮(imageview)图像在适配器视图中更改,当同时单击多首歌曲时,我无法find更改播放/停止符号的方法。 此图像显示了已按下歌曲1和歌曲3的示例。 现在只播放第3首歌曲,但图像仍然显示两首歌曲同时播放。 这是我的视图持有者,我处理更改播放/停止图像并发送歌曲点击回调: class AddVideoAudioViewHolder extends RecyclerView.ViewHolder{ ImageView PlayButton; Button AddAudioButton; TextView Title; public AddVideoAudioViewHolder(View itemView) { super(itemView); PlayButton = (ImageView) itemView.findViewById(R.id.PlayStopAudioDemo); PlayButton.setTag(1); PlayButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int PlayStopButtonState = (int) PlayButton.getTag(); if (PlayStopButtonState == 1) { mVideoAudioCallbacks.onClick(100 […]

在两个回收视图之间拖放

我创建了2个Horizo​​ntal recycleView。 哪个是完美的。 我需要在每个recycleView中的项目之间拖放function,以及在这两个recycleView项目之间拖放。 我现在还做了什么 – private RecyclerView mRecyclerViewCompletedTask; private RecyclerView.Adapter mAdapterCompletedTask; private RecyclerView.LayoutManager mLayoutManagerCompletedTask; private static String LOG_TAG = “RecyclerViewActivity”; private RecyclerView mRecyclerViewInCompleteTask; private RecyclerView.Adapter mAdapterInCompleteTask; private RecyclerView.LayoutManager mLayoutManagerInCompleteTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); mRecyclerViewCompletedTask = (RecyclerView) findViewById(R.id.my_recycler_view_completed_task); mRecyclerViewCompletedTask.setHasFixedSize(true); mLayoutManagerCompletedTask = new LinearLayoutManager(this); mRecyclerViewCompletedTask.setLayoutManager(mLayoutManagerCompletedTask); mAdapterCompletedTask = new MyRecyclerViewAdapterCompletedTask(getDataSet()); mRecyclerViewCompletedTask.setAdapter(mAdapterCompletedTask); LinearLayoutManager layoutManager1 […]