Articles of android recyclerview

RecyclerView无尽的无限滚动问题

我正在尝试使用RecyclerView实现Endless Infinite Scrolling,但我只获得了前10条记录,没有获得接下来的10条记录,甚至在尝试在底部滚动时没有取得任何进展。 虽然我想要在滚动上获得接下来的10条记录等等……但只获得前10条记录 这里我上传了我的JSON 副本 – 但是我无法从同一个url获取数据,这就是我使用客户端url和本地主机的原因。 我正在学习本教程 这是我的完整代码,我可以知道我在哪里做错了吗? JSON: { “names”: [ { “name”: “Name 1” }, { “name”: “Name 2” }, …. { “name”: “Name 60” } ] } 日志: D/name -(13759): Name 1 D/name -(13759): Name 2 ………………….. D/name -(13759): Name 60 这是我更新的代码,我用它来解析JSON数据 MainActivity.java:更新 public class MainActivity extends AppCompatActivity { private […]

隐藏RecyclerView滚动条

如何在Recyclerview中删除滚动条? 我试过用mRecyclerView.setScrollBarSize(0); 但它不起作用。 (实际上,无论我设定的价值如何,它都没有做任何事情)。

如何禁用以编程方式滚动RecyclerView

我有一个带有LinearLayoutManager的RecyclerView ,其方向为HORIZONTAL 。 其中的每个项目都可以包含交互元素(包括垂直ScrollView )。 有没有办法轻松地使RecyclerView忽略用户在不拦截触摸事件给儿童的情况下水平滚动或推送RecyclerView任何尝试? 我正在以编程方式控制RecyclerView的滚动,这对用户来说很有效。 我尝试了一些非常简单的想法,当我在响应某些事件时调用smoothScrollToPosition时,我启用滚动并禁用触摸事件直到滚动结束。 喜欢这个: private class NoScrollHorizontalLayoutManager extends LinearLayoutManager { ScrollingTouchInterceptor interceptor = new ScrollingTouchInterceptor(); protected boolean canScroll; public NoScrollHorizontalLayoutManager(Context ctx) { super(ctx, LinearLayoutManager.HORIZONTAL, false); } public RecyclerView.OnItemTouchListener getInterceptor() { return interceptor; } @Override public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) { canScroll = true; super.smoothScrollToPosition(recyclerView, state, position); } […]

在StaggeredGridLayoutManager中设置单行的跨度大小

我有一个有两列的交错网格。 这很有效。 我想要的是位置0,行跨越2列。 我之前很容易使用GridLayoutManger这样做: mGridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return position == 0 ? 2 : 1; } }); StaggeredGridLayoutManager没有像GridLayoutManager那样为我提供这个function。 有没有不同的方式这样做? 我已经搜索但没有find任何有相同问题的人,这是令人惊讶的,因为我认为这个function对于我的场景和无限滚动非常有用,当ProgressBar显示在RecyclerView的最后一行时。

如何创建循环(无尽)RecyclerView?

我试图让我的RecyclerView循环回到我的列表的开头。 我已经搜遍了整个互联网,并设法检测到我的列表结束时,但我不知道从哪里开始。 这就是我目前用于检测列表末尾的内容(在此处find): @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { visibleItemCount = mLayoutManager.getChildCount(); totalItemCount = mLayoutManager.getItemCount(); pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition(); if (loading) { if ( (visibleItemCount+pastVisiblesItems) >= totalItemCount) { loading = false; Log.v(“…”, “”+visibleItemCount); } } } 当滚动到最后,我希望在从列表顶部显示数据或滚动到列表顶部时可以看到视图我将从列表底部显示数据。 例如: View1 View2 View3 View4 View5 View5 View1 View2 View3 View4

RecyclerView scrollToPosition不会触发scrollListener

我正在使用带有ScrollListener的RecyclerView: mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); // Do my logic } }); 当我用手指滚动时,滚动侦听器触发了罚款。 但是当我逐步滚动时,就像那样: mRecyclerView.scrollToPosition(LAST_POSITION); 滚动侦听器未被触发。

在RecyclerView上获取对ViewHolder的引用单击

这是我第一次尝试实施RecyclerView 。 我在Adapter和ViewHolder类之间实现了一个Callback接口来处理UI元素(按钮)上的Click Events。 我在ViewHolder单击发生时对ViewHolder的引用时遇到问题。我可以单击列表中第一个项目的Button ,但是我定义的操作是在我的viewholder视图中的最后一个查看器上执行的。 我终于想通过我的界面传递位置,但我很难理解如何从中获取对该视图的引用。 public class RoomAdapter extends RecyclerView.Adapter { List mRooms; public RoomAdapter(List rooms) { mRooms = rooms; } @Override public RoomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { final View viewItem = LayoutInflater .from(viewGroup.getContext()) .inflate(R.layout.room_rv_item,viewGroup,false); return vh = new RoomViewHolder(viewItem,new IRoomViewClick() { @Override public void editname(int pos) { } }); } @Override […]

android.support.v7.widget.RecyclerView.onMeasure中的java.lang.NullPointerException

我尝试将RecyclerView与RecyclerView.Adapter一起使用,但这里出了点问题。 我在下面发布我的代码: 布局: topic_tile.xml: 这是在onCreate() public class TitleListActivity extends ActionBarActivity { private RecyclerView topic_view; private RecyclerView.LayoutManager mLayoutManager; private TitlelistAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_title_list); ….. topic_view = (RecyclerView)findViewById(R.id.topic_view); adapter = new TitlelistAdapter(topicList); topic_view.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(TitleListActivity.this); topic_view.setLayoutManager(mLayoutManager); topic_view.setItemAnimator(new DefaultItemAnimator()); topic_view.setAdapter(adapter); 适配器: public class TitlelistAdapter extends RecyclerView.Adapter { public List topicList; […]

RecyclerView.ViewHolder的部分更新

我正在尝试在RecyclerView随时间更改字段。 每个ViewHolder包含一个CardView和一些内部视图。 我想要制作animation的唯一视图是有时间的视图。 如您所见,没有animation: adapter.notifyDataSetChanged(); 逐个更新项目无济于事,因为整个CardView会闪烁: int len = adapter.getItemCount(); for(int i=0;i<len;i++) { adapter.notifyItemChanged(i); } 有没有办法获取所有ViewHolders的列表,然后更新(animation)每个ViewHolders中的一个TextView ?

RecyclerView:异步图像加载

我使用RecyclerView显示包含RecyclerView的列表。 为了使UI更流畅,我使用asyncTask将保存在SD卡上的58dp缩略图加载到这些asyncTask 。 问题是,一旦childView进入可视化显示,来自另一个数据的旧图像将被重用,然后在AsyncTask完成后被替换。 我可以通过在onPreExecute位图设置为null来停止混洗。 有没有办法真正重复使用旧图像,或者每次新View到位时我是否真的需要从SD卡加载图像? 这使得视图非常难看,因为首先存在错误的图像或者图像是纯白色的。