Articles of android recyclerview

从recyclerview android获取已选中checkbox的列表

我已经使用图像,标题和checkbox填充了recyclerView。 我有两个问题。 如何在单击imageview或整个回收项目时选中checkbox。 我必须通过从recyclerview获取所有选中的项目来进行下一个活动。 我的布局: 我的适配器: @Override public void onBindViewHolder(RecyclerViewHolder holder, int position) { final InterestBean model = arrayList.get(position); final int pos = position; RecyclerViewHolder mainHolder = (RecyclerViewHolder) holder;// holder Bitmap image = BitmapFactory.decodeResource(context.getResources(), model.getImage());// This will convert drawbale image into bitmap // setting title mainHolder.title.setText(model.getTitle()); mainHolder.imageview.setImageBitmap(image); mainHolder.checkBox.setChecked(arrayList.get(position).isSelected()); mainHolder.checkBox.setTag(arrayList.get(position)); mainHolder.checkBox.setOnClickListener(new View.OnClickListener() { public void onClick(View […]

如何将值从RecycleAdapter传递到MainActivity或其他活动

我正在购买购物车应用程序,项目显示如下。有一个加号,减号(+/-)按钮来选择数量。 如果产品数量发生变化,我需要将“productname”和“quantity”传递给主要活动,以便我可以使用它们来准备最终购物车。 我得到了一些使用数据库或一些内容提供商的建议, 我不知道怎么做..请帮忙 MainActivity.java import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.Window; import android.widget.Toast; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { RecyclerView recyclerView; RecycleAdapter recycleAdapter; List<HashMap> onlineData; […]

RecyclerView内容高度

有没有什么好方法可以获得RecyclerView内容的高度? 考虑到所有物品可能有不同的高度。 在我的场景中,我使用的是LinearLayoutManager。 我四处搜索,发现这个问题的结果令人惊讶。

RecyclerView java.lang.IndexOutOfBoundsException:检测到不一致。 从添加的片段恢复时无效的项目位置

你能帮帮我吗? 这是我添加片段的代码 mRecyclerView.addOnItemTouchListener( new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) { if (!IsScrolling) { Fragment fragment = new ProductInfoFragment(); Bundle bundle = new Bundle(); bundle.putString(“prodID”, mItems.get(position).getproductID()); bundle.putString(“catName”, catName); fragment.setArguments(bundle); FragmentManager fragmentManager = getActivity().getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); fragmentTransaction.add(R.id.fragmentContainer, fragment, “ProuctInfoFragment”); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); mItems.clear(); } } }) ); 但是,当我从添加的片段中按回来时,我收到此错误并且我的应用程序崩溃了。 FATAL […]

ScrollView内部的RecyclerView,某些项目未显示

我在ScrollView中有一个RecyclerView,如下所示: RecyclerView的项目是RelativeLayout ,其中有一个EditText和其他视图。 RelativeLayout和EditText的layout_height都是wrap_content 。 用户可以输入该EditText没有任何长度/行限制,以便每个项目的高度不同。 然后我发现Adapter中的getItemCount()返回true值但是onBindViewHolder()被调用了错误的时间(少于它应该),因此不足以显示所有项目。 我发现只有在我写了recyclerView.setNestedScrollingEnabled(false)才会发生这种情况。 但我不能删除这一行。 因为如果我这样做, RecyclerView将无法平滑滚动,并且与ScrollView和ScrollView本身内的其他视图ScrollView 。 这发生在6.0但不是4.1。 我在此页面上与Google进行了沟通: https : //code.google.com/p/android/issues/detail? RecyclerView ,他告诉我这是对RecyclerView的错误修复。 您可以访问该页面,以便更好地理解问题和我的目标(有一个小样本项目可以显示问题)。 我现在不同意他,我想解决这个问题。 请帮忙,提前谢谢。

如何模仿Lollipop的手机应用程序,在可滚动内容之前调整上层项目的大小?

背景 在Lollipop的手机应用程序中,当您到达“最近”或“联系人”选项卡,并且您尝试滚动时,首先发生的事情是调整上部区域的大小,其中包括最近的事件和搜索框,如下所示: 如果RecyclerView上有超过3个项目,只要上部区域可以缩小到最小尺寸,RecyclerView就不会向下滚动。 向上滚动也是如此:只要上部区域没有完全放大,RecyclerView就不会向上滚动。 问题 我找不到实现此function的最佳方法。 更具体地说,我对上部区域的大小调整存在问题,因此它将像在Lollipop上一样平滑。 为了简化,我只需要调整屏幕的一部分,而不是手机应用程序(“最近的事件”和搜索框)上显示的2。 我试过的 我尝试过多种方法: 使RecyclerView变得像整个屏幕一样大,同时拥有一个假的,大的空头。 当我滚动时,我还将“translationY”设置为顶部的真实内容。 这有一个问题,显示滚动条作为上部区域的一部分(我想在正确的位置显示滚动条)。 此外,由于您还必须处理其他页面的RecyclerViews滚动值,因此它非常复杂。 这是一个类似于某些第三方库的解决方案,例如这个 (在这里我使用的是布局而不是ImageView,但代码几乎完全相同)。 RecyclerView位于上方区域下方,滚动会更改上方区域的layoutParams,类似于我在此post中所做的操作 。 与2相同,但我改变了视图的scaleY,而不是更改LayoutParams。 对于#2和#3,问题是在某些情况下,只要我在某个值中滚动+ Y的事件,我也会得到相同值的-Y滚动(反之亦然) ,使resize效果的处理“跳跃”(上下,即使用户滚动得很好)。 我猜测为什么会发生这种情况是因为当我移动RecyclerView时,用户做的下一个事件与原始事件完全不同,因为我改变了RecyclerView的定位方式或大小。 我尝试过使用setOnTouchListener (甚至与GestureDetectorCompat一起)和setOnScrollListener 。 所有这些都引起了同样奇怪的问题。 这个问题 我该如何解决这个问题? 为什么会发生,为什么不总是发生? 编辑:我试图改变#2,所以我不会处理RecyclerView的触摸事件,而是处理其容器的触摸事件(一些LinearLayout)。 由于某种原因,容器没有响应触摸事件,所以我用RelativeLayout替换它,并在此布局内的所有内容上放置一个视图,这将响应触摸事件(并相应地更改上部区域)。 这有效,但是在需要时我无法将事件进一步传递给子视图。 我认为最好的方法是自定义RecyclerView(扩展它)触摸处理。 也许添加一个用于滚动的监听器,当RecyclerView即将滚动时,它将询问它是否正常,如果没有,它将不会尝试滚动直到触发事件被触发并重置其状态。

animation机器人/视图底部违反了recyclelerView的滚动

我有一个recyclerView,它包含一个自定义视图列表。 当我单击recyclelerView项时,它会被展开,提供更多信息。 另一次点击此视图(或另一个视图)将关闭当前视图。 提供SimpleItemAnimator的默认animation似乎不合适。 所以,我试着像我一样自己实现animateChange : public class CustomItemAnimator extends CustomDefaultItemAnimator { private static final int FADE_IN = 1; private static final int FADE_OUT = 2; private ItemHolderInfo getItemHolderInfo(RecyclerView.ViewHolder viewHolder, MoveInfo moveInfo) { moveInfo.stuff.clear(); ViewGroup content_container = (ViewGroup) viewHolder.itemView.findViewById(R.id.item_content); for (int i = 0; i < content_container.getChildCount(); i++) { View view = content_container.getChildAt(i); if (view.getVisibility() […]

Android – 当应用在后台时,Recycler视图会resize

我的应用程序上有这个非常奇怪的错误。 每次打开我的应用程序时,我的视图都能正常运行,但当我尝试将我的应用程序放在后台并再次打开我的应用程序时,我的回收站视图会重新resize。 这是一张正确描述它的图片: 这是正确的图像: 当应用程序在后台时,这是影响我的recyclerview的图像,然后我再次打开它。 有时我的recyclerview中的所有图像都消失了。 这是一个截图: 这是我的onResume()代码: public void onResume() { Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container); if (fragment instanceof MenuFragment) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.remove(fragment); transaction.commit(); transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment_container, fragment); transaction.addToBackStack(null); transaction.commit(); } } 这是我的查看分页器布局: 这是我的列表布局: 您认为这里的问题是什么? PS:该错误仅发生在选定的手机上。 不是全部。 我们在三星Galaxy s8 +上进行了测试,效果很好。

如何在RecyclerView中使用ContentObserver?

使用ListView我们有一个很好的本机模式来将一些数据从db映射到列表: DB – > ContentProvider – > CursorLoader – > CursorAdapter – > ListView 这种方法在数据层分离,性能和自动数据更新方面表现良好。 但这种模式并不适合新的RecyclerView 。 有一些模仿旧行为的方法: 将recyclelerview与数据库一起使用 但是使用旧样式notifyDataSetChanged与RecyclerView存在问题。 它不能使用ItemAnimatorfunction,它会失去滚动位置,而且它只是无效。 那么,在使用包含在ContentProvider数据库时,我们如何从精细的变更通知中受益? Cursor是静态的,要从中获取新数据,我们需要获得新的Cursor 。 因此,似乎我们需要一个自定义中间数据层,它将合并来自Cursors的数据并将实体List公开给RecyclerView.Adapter 。 此外,我们必须手动将ContentObserver onChange()事件映射到RecyclerView通知。 这也意味着我们必须摆脱CursorLoader。 对于这样的基本任务来说,这是一项令人难以置信的工作。 有没有更好的解决方案?

在nestedscrollview中无限滚动的Recyclerview触发onScrolled

我在nestedscrollview中有recyclerview: Recyclerview有OnScrollListener,它处理来自此示例的无限滚动: https : //guides.codepath.com/android/Endless-Scrolling-with-AdapterViews-and-RecyclerView 。 但是看起来nestedscrollview正在触发onScrolled方法,所以整个项目列表都会立即加载。 问题:如何防止这种行为? 注意,一切都适用于recyclerview,而不是在nestedscrollview中