Articles of android recyclerview

android -RecyclerView在kitkat中

因为RecyclerView SRC在android.support.v7.widget.RecyclerView中,只要我从支持库(或谷歌播放服务)引用这个包,我可以使用套件kat和果冻豆中的recyclerView?

共享元素转换没有预期的行为

我实现了从RecyclerView中的图像到新Fragment中的图像之间的共享元素转换。 RecyclerView被托pipe在一个Activity中的一个片段中,目标片段被托pipe在另一个Activity中。 当我点击我的图片时,转换就像预期的那样发生,我得到了我的片段。 但是当我点击后退button时,转换正试图将我的图像放在我的RecyclerView的第一个位置,而当前显示的图像不一定是第一个。 从这种情况出发,我认为是因为它是一个图像列表,我在里面设置了一个转换名称,可能是因为所有的图像都有相同的转换名,这个过程是混乱的,只是得到第一个图像名称。 所以也许我应该dynamic地给每个人一个不同的过渡名称。 我也为目标图像设置了相同的名称,并在每次select新图像时重置它。 但它仍然无法正常工作。 任何人都可以帮助我吗? 这里是我的onItemClickListener中的代码: mAdapter.setOnItemClickListener(new RssItemAdapter.OnItemCLickListener(){ @Override public void onItemClick(View view, int position) { final RssItem item = mAdapter.getItem(position); final RssElementIntent intent = new RssElementIntent(getActivity(), item, position); // mRootView is the view of the fragment final ImageView image = (ImageView) mRootView.findViewById(R.id.rss_element_image); image.setTransitionName(getString(R.string.transition_name_rss_feed_picture) + position); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( getActivity(), […]

查找RecyclerView中第一个可见项的顶部偏移量

我有一个RecyclerView + LinearLayoutManger正在使用一个适配器持有聊天消息。 我将聊天消息的数量限制在最近的100个。 这个问题是,当我删除旧的聊天,回收站查看聊天的滚动位置改变,因为索引0被删除。 我开始写下面的代码: int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition(); View v = layoutManager.getChildAt(firstVisiblePosition); if (firstVisiblePosition > 0 && v != null) { int offsetTop = //need to get the view offset here; chatAdapter.notifyDataSetChanged(); if (firstVisiblePosition – 1 >= 0 && chatAdapter.getItemCount() > 0) { layoutManager.scrollToPositionWithOffset(firstVisiblePosition – 1, offsetTop); } } 我认为这会很容易得到第一个可见的项目位置的可见偏移量。 防爆。 如果第一个可见视图是300dp,但只有最后200dp可见,我想获得100偏移量。 这样我可以使用scrollToPositionWithOffset(firstVisiblePosition […]

在底部工作表中更新recyclerview内容失败

我想通过点击事件来改变底部视图中的列表内容,但是我只有空白表单。 这里是一个从BottomSheetSample(github.com/niravkalola/BottomSheetSample)修改的演示。 mainActivity.java package com.nkdroid.bottomsheetsample; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.BottomSheetDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import java.util.ArrayList; import java.util.List; import java.util.Random; public class MainActivity extends AppCompatActivity implements ItemAdapter.ItemListener { private Button btnView, btnDialog; BottomSheetBehavior behavior; private BottomSheetDialog mBottomSheetDialog; private ItemAdapter mAdapter; RecyclerView recyclerView; @Override protected […]

与Sliding RecyclerView协调的折叠/展开视图

我正试图实现以下的影响(也见下图): 应用程序将打开一个视图(地图)部分可见和RecyclerView在默认的锚点(中心图像) 用户滚动RecyclerView ,地图崩溃,列表继续滚动(右图) 用户向下滚动RecyclerView ,地图展开到最大点(注意列表不应该完全滑出屏幕,而是到某个锚定点)(左图)

LinearLayoutManager无法parsinggetOrientation()

我有一个RecyclerView实现在一个片段,我试图添加分频器的代码。 我有RecylcerView按预期工作,但LinearLayoutManager无法parsinggetOrientation()函数。 private RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager mLayoutManager; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = (View) inflater.inflate(R.layout.fragment_settings, null); getActivity().setTitle("Settings"); mRecyclerView = (RecyclerView) root.findViewById(R.id.recycler_view_settings); mRecyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(getContext()); mRecyclerView.setLayoutManager(mLayoutManager); mAdapter = new SettingsAdapter(getResources().getStringArray(R.array.setting_list)); mRecyclerView.setAdapter(mAdapter); DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), mLayoutManager.getOrientation()); mRecyclerView.addItemDecoration(dividerItemDecoration); return root; }

RecyclerView notifyDataSetChanged滚动到顶部位置

当在RecyclerView上调用notifyDataSetChanged它不保留滚动位置和滚动到顶部,是否有任何解决scheme来保留它的滚动位置?

PopupMenu在RecyclerView中没有正确定位

我正在做一个Android应用程序加载数据到一个ImageView里面的RecyclerView作为溢出button。 当用户点击它时,会popup一个PopupMenu选项。 我已经设法显示它,但是这个位置看起来不正确。 请看截图。 只有前两项看起来不错。 这里是源代码: view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final PopupMenu popupMenu = new PopupMenu(context, view); final Menu menu = popupMenu.getMenu(); popupMenu.getMenuInflater().inflate(R.menu.menu_item_action, menu); popupMenu.setOnMenuItemClickListener(onMenuItemClickListener); switch (Global.listMode) { case Global.LIST_STYLE_NORMAL: { menu.findItem(R.id.action_delete).setVisible(false); break; } case Global.LIST_STYLE_FAVORITE: { menu.findItem(R.id.action_add_to_favorite).setVisible(false); break; } case Global.LIST_STYLE_WATCH_LIST: { menu.findItem(R.id.action_add_to_watch_list).setVisible(false); break; } case Global.LIST_STYLE_DOWNLOAD: { menu.findItem(R.id.action_download).setVisible(false); […]

为什么RecyclerView onBindViewHolder只调用一次?

在我的代码中有一个奇怪的错误。 我使用Recycler View(以前没有任何问题)。 我创build了testingArrayList在Recycler中显示它,但是我得到了RecyclerView中唯一的第一行,之后,应用程序停止(不崩溃)像ArrayList完成。 我的主要代码: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_all_tab, container, false); Activity activity = getActivity(); //TODO: For testing ONLY ArrayList<Order> orders = new ArrayList<>(); for(int i = 0; i < 10; i++) { orders.add(new Order(i, i, i)); } […]

交错网格布局pipe理器dynamic列数

我怎样才能使用StaggeredGridLayoutManager RecyclerViewdynamic数量的列。 我已经有工作RecyclerView 。 这里是屏幕我需要做的事情: