Articles of android recyclerview

安卓Gmail应用程序,如列表视图,带有图标中的字母

我正在寻找一个解决方案,如gmail的Android应用程序中的电子邮件列表,我想要一个滑动删除列表,并有标题和标题的第一个字符的图标。 在我的应用程序中,这将用于从数据库表中显示应用程序中的一些名称,因此将在gmail应用程序中显示此图标,其中包含名称的第一个字母,然后是旁边的名称。 滑动将提供删除选项。 这里是参考的截图(我将只使用标题,左边的图标和时间!) UPDATE 现在我打算使用TextDrawable作为EUGEN建议。 现在我遇到了这个问题,库的示例文件夹中提供的示例适配器使用listarry作为数据集 private List mDataList = Arrays.asList( new ListData(“Iron Man”), new ListData(“Captain America”), new ListData(“James Bond”), new ListData(“Harry Potter”), new ListData(“Sherlock Holmes”), new ListData(“Black Widow”), new ListData(“Hawk Eye”), new ListData(“Iron Man”), new ListData(“Guava”), new ListData(“Tomato”), new ListData(“Pineapple”), new ListData(“Strawberry”), new ListData(“Watermelon”), new ListData(“Pears”), new ListData(“Kiwi”), new ListData(“Plums”) ); 我必须以字符串数组的forms使用数据。 我是新手列出数组和适配器,所以我需要帮助!

RecyclerView Recycled ViewHolder Image查看错误的大小

我有一个带有不同View Holders的回收站视图。 一些视图持有者具有图像视图,我将其传递到Glide以显示图像。 问题是,当回收者视图开始回收视图时,imageview宽度/高度是回收视图的宽度/高度,然后他们会错误地显示图像。 这是我的ImageView: 这被传递到Glide Glide.with(itemView.getContext()) .load(Uri.parse(MediaUtils .getMedia(feedContent).getMediaUrl())) .placeholder(R.drawable.placeholder) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .crossFade().into(image); 这种方法很有效,直到Recyclerview开始回收,因此recyclerview中的第一个图像看起来就是这样,这就是它的外观。 但是,当您从项目滚动并向后滚动时,它看起来像这样: 因此图像变形并且不是父母的全宽。 我希望图像视图包装内容,因为所有图像将是不同的高度等。为了测试这个我添加了这个行holder.setIsRecyclable(false); 为了防止这个特定的支架和所有显示的图像的回收,然而,正如预期的那样,这产生了刺耳的效果。 所以我尝试在OnViewRecycled方法中重置图像视图的参数,如下所示: @Override public void onViewRecycled(AbstractHolder viewHolder){ super.onViewRecycled(viewHolder); int position = viewHolder.getAdapterPosition(); IFeedContent content = mFeedContentList.get(position); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.setMargins(0, (int) Utils.dpTopx(mContext,10),0,0); params.gravity = Gravity.CENTER; if(isImage(content)){ viewHolder.getImageView().setImageURI(null); viewHolder.getImageView().setImageDrawable(null); viewHolder.getImageView().setImageResource(0); viewHolder.getImageView().setLayoutParams(params); } } 在这里我重新创建xml中的params但它不起作用。 方法isImage()这只是检查对象的mimetype。 任何人都可以帮忙吗? 这非常令人沮丧。 […]

停止用户滚动以在RecyclerView上设置位置

所以我有一个问题,我对Android编程很新,自从我开始编写Android应用程序以来只有6-8周,所以我可能会失明并且看不到简单的答案,但这是我的问题: 我正在制作一个学校项目,我正在尝试开发一个与今天的日历分割视图(下面的那个)相似的日历 所以我用GridLayoutManager创建了一个RecyclerView,如下所示: 直到这里一切都很好,但我正在尝试实现在今天的日期设置日历的按钮,事情就是当我滚动时,然后使用scrollToPositionWithOffset(position,0)设置RecyclerView位置; 视图保持从第一次投掷中获得的动量,设置位置然后继续滚动直到动量消失 我搜索了很多寻找解决方案,当我使用gridView而不是RecyclerView我使用smoothScrollToPositionFromTop()停止滚动然后setSelection()来定位它,但gridView跳过帧我不得不改变,这里使用RecyclerView没有smoothScrollToPositionFromTop和smoothScrollToPosition不会停止滚动,scrollToPosition或scrollToPositionWithOffset也没有。 发现这一点,但没有帮助Scroll RecyclerView在顶部显示所选项目 和其他许多没有帮助的人。 我考虑过实现自己的滚动逻辑,但当我调查它时,我的头部爆炸,我不知道从哪里开始。 有谁知道如何解决这个问题?

如何从ScrollView中的RecyclerView中删除焦点?

我有一个包含ImageView和RecyclerView的Scrollview。 如果导航抽屉打开然后关闭RecyclerView自动滚动到顶部,如何停止这个? …

有没有办法在Android Recycler View中显示Google Admob

我想在我的应用的主要活动中使用谷歌Admob展示广告。 我已经通过谷歌开发者网站获得帮助来展示展示广告所需的所有代码,但是当我运行我的应用时,广告没有显示。 我不知道发生了什么问题: MainActivity : import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; public class MainActivity extends AppCompatActivity { public RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager […]

RecyclerView没有完全展开以显示所有元素

我创建了一个EditText,一个Button和一个RecyclerView(由1个TextView和1个ImageView子项组成)来添加看起来像这样的 TextViews。 在顶部的EditText中,用户可以输入文本并点击+按钮。 这会将其文本添加到List(String)中,该List用于更新RecyclerView。 用户可以点击右边的x来删除RecyclerView中的条目。 这是整个片段布局的图像 您可以在图像中看到的问题是,在几次提交后,RecyclerView会停止扩展并保持固定大小(请注意右下角的小点)。 您可以在RecyclerView中滚动查看项目,项目仍然会添加到项目中,但它不会扩展到完整大小(图像中的项目有20多个项目)。 如果我删除一个项目,由于某种原因高度增长但它仍然不会显示所有元素,并且当我添加新项目时它会缩小。 我尝试过的事情 这是RecyclerView代码。 heirarchy去了 所有高度和宽度都设置为匹配父级,所有方向都设置为垂直: 将条目添加到RecyclerView(适配器外部)的代码: ingredientsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (ingredientsText.getText().toString().length() > 0) { mIngredients.add(ingredientsText.getText().toString()); ingredientsText.setText(“”); mAdapter.notifyDataSetChanged(); mRecyclerView.setBackgroundResource(R.drawable.rounded_edittext); } } }); 最后,从RecyclerView(RV适配器内)删除条目的代码: cancelImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mIngredients.remove(getAdapterPosition()); mAdapter.notifyItemRemoved(getAdapterPosition()); mAdapter.notifyItemRangeChanged(getAdapterPosition(), mIngredients.size()); if(mAdapter.getItemCount() == 0) mRecyclerView.setBackgroundResource(0); } }); […]

删除最后一项时,Recyclerview崩溃。 NullPointerException:android.view.ViewGroup $ LayoutParams android.view.View.getLayoutParams()

我有一个recyclerview,使用arraylist填充。 当我从列表中删除项目时,它可以正常工作,直到最后一项被删除。 下面是我的recyclerview适配器中的代码,它删除了一个项目。 public void removeItem(int position) { itemsData.remove(position); notifyItemRemoved(position); } 下面是崩溃日志。 日志不会将我引导到我的代码中的指定位置。 所以我不确定是什么导致了这个问题。 我做了一些测试并记录了位置。 如果我在arraylist中添加一个项目并在recyclerview中添加了notifyItemInserted项目的位置,则为0.如果我点击添加的项目,则位置为0,如果我删除该项目,则将其从位置0移除,但是将项目移除为位置0时崩溃。 java.lang.NullPointerException:尝试在android.support.v7.widget.OrientationHelper $ 2.getDecoratedStart(OrientationHelper)上的空对象引用上调用虚拟方法’android.view.ViewGroup $ LayoutParams android.view.View.getLayoutParams()’。 java:316)at android.support.v7.widget.LinearLayoutManager.findOneVisibleChild(LinearLayoutManager.java:1633)at android.support.v7.widget.LinearLayoutManager.findFirstVisibleChildClosestToStart(LinearLayoutManager.java:1453)at android.support.v7.widget .LinearLayoutManager.computeScrollOffset(LinearLayoutManager.java:997)在android.support.v7.widget.LinearLayoutManager.computeVerticalScrollOffset(LinearLayoutManager.java:969)的android.support.v7.widget.RecyclerView.computeVerticalScrollOffset(RecyclerView.java:1175)at at android.view.View.canScrollVertically(View.java:12835)在android.support.v4.view.ViewCompatICS.canScrollVertically(ViewCompatICS.java:35)android.support.v4.view.ViewCompat $ ICSViewCompatImpl.canScrollVertically(ViewC) ompat.java:1136)在Android.support的android.support.v4.view.ViewCompat.canScrollVertically(ViewCompat.java:1528)android.support的android.support.v7.widget.RecyclerView $ LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6594) .v7.widget.RecyclerView $ LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6573)android.support.v7.widget.LinearLayoutManager.onInitializeAccessibilityEvent(LinearLayoutManager.java:204)at android.support.v7.widget.RecyclerViewAccessibilityDelegate.onInitializeAccessibilityEvent(RecyclerViewAccessibilityDelegate) .java:66)在android.support.Av.AccessibilityDelegateCompat $ AccessInDeitgateJellyBeanImpl $ 1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:228)android.support.v4.view.AccessibilityDelegateCompatJellyBean $ 1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:56)at android。在android.view.View.sendAccessibilityEventUncheckedInternal(V)中查看.View.onInitializeAccessibilityEvent(View.java:5439) iew.java:5312)在android.sview.View.View $ AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:20823)android.support.AccessibilityAleibilityCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:117)at android.support.v4.view .AccessibilityDelegateCompat $ AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:210)at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:358)at android.support.v4.view.AccessibilityDelegateCompat […]

notifyDataSetChanged()不刷新适配器

我的适配器列表在广播接收器上刷新。 如果适配器列表大小大于1,一切正常工作,意味着如果我的recyclerview已经有一行shwoing然后列表刷新就好了。 但是如果列表大小从0变为1,那么我的适配器通知数据集已更改停止工作。 在recyclerview上没有数据显示。 我不知道为什么它不起作用。 Recyclerview类: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { v = inflater.inflate(R.layout.job_recyclerview, container, false); getActivity()); initialise(v); init(); showNoTaskMessage(); new loadListTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); mMyBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Here you can refresh your listview or other UI SlidingTab.slidingTab.getTabAt(0).setText(“New (” + SingleTon.getInstance().getNewjob() + […]

RecyclerView – 跳转到位置,然后平滑滚动到顶部

我有一个包含50多件物品的RecyclerView。 每个项目都包含一个图像(和文本)并填满大部分屏幕。 我调用recyclerView.smoothScrollToPosition(0) ,但animation需要3秒以上。 如果我调用recyclerView.scrollToPosition(10)然后再调用recyclerView.scrollToPosition(10) recyclerView.smoothScrollToPosition(0)则RecyclerView会从底部向上滚动到顶部(忽略“跳转”到位置10的请求)。 有没有办法在调用smoothScrollToPosition之前等待“跳转”?

Android 5.0(Lollipop)CheckedTextView按突出显示问题

在Android 5.0 Lollipop上运行时,我遇到了一个填充了CheckedTextViews的RecyclerView令人沮丧的问题。 Lollipop之前的所有版本都很好,并没有出现这个问题。 请查看下面的图片以便更好地理解: 预棒棒糖 棒糖 了解Lollipop如何仅在CheckedTextView的checkbox部分上绘制选择突出显示? Pre-Lollipop没有这个问题/ bug,并在视图的整个宽度上绘制选择突出显示(这是我想要的行为)。 这是我正在绘制到列表中的CheckedTextView: 有任何想法吗? 我尝试了一些不同的解决方案,例如android:focusable=”false” , android:duplicateParentState=”true” , android:duplicateParentState=”false” …… 多谢你们!