Articles of android viewholder

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的一个项目时,它会“列出”列表(高程更改),然后展开到全屏视图。 有关如何实现这一目标的任何提示?

viewHolder.getAdapterPosition()始终返回-1

由于某种原因,我无法使用holder.getAdapterPosition()因为它总是返回-1但holder.getLayoutPosition()返回一个位置就好了。 我的onCreateViewHolder: @覆盖 public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_item, parent, false); ViewHolder vh = new ViewHolder(this, v); return vh; } 我的ViewHolder构造函数: public ViewHolder(DirectoryListAdapter adapter, View linear) { super(linear); this.adapter = adapter; this.linear = (LinearLayout) linear; this.entryName = (TextView) linear.findViewById(R.id.item_name); this.entryImage = (ImageView) linear.findViewById(R.id.item_image); } […]

我应该在哪里将setOnClickListener放在RecyclerView适配器中

在互联网上的教程中,他们在RecyclerView的Adapter中设置了OnClickListener,它们以两种方式定义它:在ViewHolder内部或在BindViewHolder内部。 我的问题是哪一个是更好的方法,请推荐任何其他方法(如果有的话) 1)在ViewHolder中: public static class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View itemView) { super(itemView); tvSrc = (TextView) itemView.findViewById(R.id.tvSrc); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(), “inside viewholder position = ” + getAdapterPosition(), Toast.LENGTH_SHORT).show(); } }); } 2)在BindViewHolder中 public void onBindViewHolder(DisplayTrainsAdapter.ViewHolder viewHolder, final int position) { viewHolder.tvSrc.setText(mDataset.get(position).strSrc); viewHolder.tvSrc.setOnClickListener(new View.OnClickListener() { @Override public […]

使用Android中的Firebase在单个RecyclerView中获取两个不同的视图

我开发了一个应用程序,其中有两个post 使用毕加索的图像文章 使用Youtube Api的videopost。 我已经使用RecyclerView和Firebase recyclerAdapter实现了这两个问题,但问题是我不知道如何区分两个视图,如果我使用Youtube Api使用video视图它附加了图像视图并且还复制到recyclerView中的所有项目,然后所有项目中只播放一个video。 我想要的是,如果我想要显示图像,那么该项目只能获取图像,如果我想显示video,则reyclerView项目仅获取video而不重复。 喜欢Instagram 。 我搜索了很多论坛,但没有得到任何帮助。 请帮忙。 我使用Firebase作为我的数据库,ViewHolders就是根据这个。 图片和videopost的类文件: FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter( post.class, R.layout.post_row_recycle_home, postViewHolder.class, mDatabaseReference ) { @Override protected void populateViewHolder(postViewHolder viewHolder, post model, int position) { viewHolder.setimage(getApplicationContext(), model.getImage()); viewHolder.setYoutube(model.getYoutube()); } }; mrecyclerView.setAdapter(firebaseRecyclerAdapter); 持有人: public static class postViewHolder extends RecyclerViewPager.ViewHolder{ View mView; public postViewHolder(View itemView) { super(itemView); […]

Android:如何在位置(从适配器外部)访问viewholder

我有一个Recycler视图适配器。 所以它拥有3个视图。 只需每个视图都有ImageView。 当用户点击图像时(3个中的1个)它创建了使用照片应用程序的新意图,并在完成后将其返回给调用者。 调用者(创建RecyclerView及其适配器的activity)处理onActivityResult。 从那里我需要将所提到的意图中的缩略图设置为相应的选定ImageView。 题。 在我的Activity中,我如何知道要修改哪个imageView(可用3个)? 我的活动只知道回收器视图适配器中的哪个项目被点击的位置。 是否有可能通过仅使用位置以某种方式获得对适配器中特定imageView的引用? 所以像这样:来自activity: adapter.getImageView(position) 编辑:所以我的解决方案是:我正在跟踪适配器中的所有ImageViews并将它们的ref存储在`onBindViewHolder中的ArrayList中。 所以现在我可以使用adapter.getImageView(position)