Articles of android viewholder

Android Google在RecyclerView.ViewHolder中映射片段

如何从RecyclerView.ViewHolder访问GoogleMap 我有: public class MapRowHolder extends RecyclerView.ViewHolder { public MapRowHolder(View view) { super(view); } } XML: 适配器: public class MapAdapter extends RecyclerView.Adapter { public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { RecyclerView.ViewHolder mh; View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.map_row, viewGroup, false); mh = (RecyclerView.ViewHolder)new PodatkiZaMapRowHolder(v); return mh; } public void onBindViewHolder(RecyclerView.ViewHolder RowHolder, int polozaj) { MapRowHolder mapRowHolder = […]

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 […]

如何处理RecyclerView.ItemDecoration中的点击事件?

我有一个RecyclerView(带有LinearLayoutManager)和一个自定义的RecyclerView.ItemDecoration。 让我们说,我想在装饰视图中有按钮(出于某种原因……)。 我用按钮给布局充气,它画得很好。 但我不能使按钮可点击。 如果我按下它,没有任何事情发生(它保持不变,没有按下效果)并且onClick事件没有触发。 ItemDecoration布局的结构是 而我正试图在ViewHolder中设置侦听器的装饰 class ItemDecorationHolder extends RecyclerView.ViewHolder { public TextView header; public Button button; public HeaderHolder(View itemView) { super(itemView); header = (TextView)itemView.findViewById(R.id.header); button = (Button)itemView.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //.. Show toast, etc. } }); } } 我正在onDrawOver方法中绘制装饰。 (实际上,我正在修改此代码库: https : //github.com/edubarr/header-decor ) 有任何想法吗? 它可行吗? 谢谢!

片段中的Recyclerview不显示任何内容

我有一个片段,我想在其中包含recyclerview。 但遗憾的是它没有显示任何内容,似乎查看器方法没有开始。 (对不起,我的英语不好)。 这是片段的代码: public class Quran_Fragment extends Fragment { public static final String ARG_SCROLL_Y = “ARG_SCROLL_Y”; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_scrollview_quran, container, false); // Ab hier neu: Basem @ BMW RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list); // Die Klasse ItemData_quran kann ja gleich bleiben für alle […]

ListView setText在特定位置

我定义了以下代码,以便能够在特定位置设置文本。 if(position == 0) { holder.text.setText(“blah”); } 我想要的是检查位置是否等于0,然后如果是,则在位置p上设置文本 – 每次它是p =位置+ 1(下一个位置)。 我们是否能够将文本从持有者设置为文本视图,但是在某个位置。 谢谢。

CardView中的Google Map Lite

我一直试图让一个非常基本的应用程序去玩Material Design。 我正在尝试创建一个Listview(使用新的RecyclerView),每个项目都是一个卡片女巫有一个谷歌地图精简版。 我基本上都遵循这个例子: 创建列表和卡片 ,对于谷歌地图实现,我一直在使用这个例子 当我在适配器中只有一个项目时(因为只有一个项目可以显示),当我向适配器添加第二个项目时(因此列表中应该有两个项目),应用程序崩溃了例外: 21158-21158/lollipop.auxilium.nl.lollipoptest E/AndroidRuntime﹕ FATAL EXCEPTION: main android.view.InflateException: Binary XML file line #21: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719) at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) at android.view.LayoutInflater.inflate(LayoutInflater.java:498) at android.view.LayoutInflater.inflate(LayoutInflater.java:398) at lollipop.auxilium.nl.lollipoptest.MyAdapter.onCreateViewHolder(MyAdapter.java:63) at lollipop.auxilium.nl.lollipoptest.MyAdapter.onCreateViewHolder(MyAdapter.java:25) at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:4121) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3431) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3340) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1810) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1306) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1269) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:523) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1988) at […]

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。 任何人都可以帮忙吗? 这非常令人沮丧。 […]

如果自定义列表视图行内容是动态的,如何使用视图持有者?

我已经使用基本适配器创建自定义列表视图到动态行内容。内容以编程方式创建(checkbox,文本视图),它们包含在布局中。 滚动时间问题很慢,因为不使用视图持有者。 我如何使用视图持有人这种types的自定义列表视图? 任何解决方案或建议? 在此列表之后..

在viewholder中查看不更新(不占用高度)

我有一个配置为wrap_content的视图。 在该视图中,如果用户未登录,我会显示一个视图。此视图作为ViewStub膨胀。 屏幕上的第一个单元格一切都很好。 但是,如果我滚动到屏幕外的单元格,那就错了。 这个观点没有达到他的高度。 在第三个单元格中, View_NoLoggedInView ( ViewStub中的ViewStub )的android:id=”@+id/background”不会占用他的高度。 我删除了不相关的代码,使类和布局更具可读性。 有没有人知道为什么第三个单元格只有在他离开屏幕然后再次进入时才会更新以及如何解决这个问题? 在这里你可以find像gif的视觉问题: Viewholder AXML布局: 膨胀的View_NoLoggedInView viewstub布局Axml代码: 这是class级 : public abstract class BasePollViewHolder : BaseTimeLineDateViewHolder, View.IOnLayoutChangeListener { #region variables bool hasLayoutListener = false; #endregion #region properties public abstract int NotLoggedInViewResourceId { get; } public abstract int BackgroundResourceId { get;} public BaseNoLoggedInView NoLoggedInView { get; set; […]

Android RecyclerView – 触摸时animation项目高程

我希望实现此video中显示的转换(来自Google课程): https : //youtu.be/iYN5mM0JN9M?t = 22s 用单词表示:当单击RecyclerView的一个项目时,它会“列出”列表(高程更改),然后展开到全屏视图。 有关如何实现这一目标的任何提示?