Tag: android recyclerview

如何在Android的Activity中使用onItemLongClickListener?

我正在使用ItemClickSupport类,我想使用他们的长按听众,但我怎么知道它是否被点击很长? 可悲的是我没有find任何使用这个例子。 ItemClickSupport.addTo(recyclerView3).setOnItemLongClickListener { recyclerView, position, v -> true } 我该如何检查是否属实? 我如何获得被点击的位置? ItemClickSupport.java:gist /** * A class that adds item click support to a {@link RecyclerView}. * * @author Hugo Visser * @see * Getting your clicks on RecyclerView */ public class ItemClickSupport { private final RecyclerView recyclerView; private OnItemClickListener itemClickListener; private OnItemLongClickListener itemLongClickListener; private […]

如何滚动到RecyclerView的底部? scrollToPosition不起作用

我想在加载活动后滚动到RecyclerView列表的底部。 GENERIC_MESSAGE_LIST = (ArrayList) intent.getExtras().getParcelableArrayList(ConversationsAdapter.EXTRA_MESSAGE); conversationView = (RecyclerView) findViewById(R.id.list_messages); conversationView.setHasFixedSize(true); conversationViewLayoutManager = new LinearLayoutManager(this); conversationView.setLayoutManager(conversationViewLayoutManager); conversationViewAdapter = new ConversationAdapter(GENERIC_MESSAGE_LIST, this); conversationView.setAdapter(conversationViewAdapter); conversationView.scrollTo(…)抛出一个关于在RecyclerView中不被支持的exception,而conversationView.scrollToPosition(…)似乎没有做任何事情。 上面的代码块后,我补充说 conversationView.scrollToPosition(GENERIC_MESSAGE_LIST.size() + 1) 这不起作用。 GENERIC_MESSAGE_LIST有30个元素。

如何在Kotlin上使用Firebase UI数据库?

val adapter = FirebaseRecyclerAdapter( Discount::class.java, R.layout.fragment_main_day_item, Holder::class.java, FirebaseDatabase.getInstance().getReference() ) { override fun populateViewHolder(holder: Holder, dis: Discount, pos: Int){ } } 文档在这里 我如何使用Kotlin来处理这个问题 编辑 val mAdapter = object : FirebaseRecyclerAdapter( Chat::class.java, R.layout.fragment_main_day_item, ChatHolder::class.java, ref) { public override fun populateViewHolder(holder: ChatHolder, chat: Chat, position: Int) { } } 我把java转换成了kotlin,它可以工作。

来自回收站视图的列表项的异步调用

我有一个RecyclerView ( ListView )。 每个列表项(行)都有上传/下载按钮。 当用户按下按钮时,它必须上传或从亚马逊下载文件。 上传或下载过程正在使用Kotlin Fuel框架完成。 Fuel是一个异步框架。 一旦上传或下载过程完成,我就写回调来RecyclerView适配器。 现在,我必须改变按钮(例如,如果按钮是上传的,在用户点击之后,它必须上传,一旦上传完成,它应该改变为下载按钮)。 我搜索列表(我传递给列表视图),一旦调用回调方法,在RecyclerView查找列表项的位置。 但是我不知道如何让View Holder更新从上传到下载或下载上传的按钮。 我试过,一旦识别行,就调用notifyDataSetChanged 。 但它的行为如此不同,以至于RecyclerView的第一页。 notifyDataSetChanged后根本不显示上传/下载按钮。 我应该调用notifyItemChanged(position)以便它调用bindViewHolder() ,它具有逻辑显示下载按钮,如果文件不存在,否则上传按钮。 或者还有其他更好的方法来做到这一点。 我在单独的文件中定义了FUEL调用,以实现可重用性。

Android RecyclerView无限滚动而不使用NULL对象来加载指标

我正在创建一个RecyclerView Adapter,在这个链接Android Recyclerview中加载无限数据 。 当我们想要显示加载指标时,我们写下面的代码: contacts.add(null); contactAdapter.notifyItemInserted(contacts.size() – 1); 我正在使用kotlin,不希望这个空对象被添加到列表中,也不希望在RecyclerView之外加载指示器(意味着加载指示器必须是列表中的一个项目)。 有什么办法,我们不需要添加一个空对象? 几乎互联网上的每个例子都使用这个空对象来显示加载指示符。 请显示任何代码示例或任何其他相关的博客文章来帮助。 谢谢。

如何使用Retrofit2 API在RecyclerView中显示数据?

首先,我是Android / Java / Kotlin开发的新手。 我正在使用Retrofit2从Udacity API检索数据。 我可以看到Logcat中的响应,但是当我尝试在RecyclerView中显示时,只有一个空白屏幕。 我认为错误是在MainActivity中,但我仍然无能,需要帮助。 我的模型类 class Course(var title: String, var subtitle: String, var key: String, var instructors: List, var expected_learning: String, var required_knowledge: String) class Instructor(var name: String, var bio: String) 我的界面 interface ApiServiceInterface { @GET(“courses”) fun list() : Call } 我的适配器 class CourseAdapter(val listCourses: ArrayList, val context: Context) : […]

更新Recycler视图并为屏幕旋转创建可分区(这里最好的做法是什么?)

我一直在努力学习Kotlin两个月。 我在Kotlin做了一个Reddit应用程序,在Recycler View Grid Layout显示缩略图 将我的情况情景化 在MainActivity的apiCall方法中,我调用RedditAPI ,在其中使用RedditAPI进行网络调用,并根据ResultValue object class返回Observable然后,我在MainActivity检索对象,并将其显示在Recycler View ,这很有效。 但是,当我实现无限滚动,并有新的对象生成每次向下滚动时,我不得不将所有值添加到一个mutable list cumulativeValue ,更改我的适配器的结构,只是调用adapter.notifydatasetchange()滚动,也工作出来罚款。 private val cumulativeValues = mutableListOf() 然后在onscrolllistener redditAPI.callParameters(location, page, address.queryLimit, afterValue) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { result -> cumulativeValues.addAll(result.data.children.toMutableList()) 我的代码工作,但我想实现屏幕旋转,现在我不知道我是否可以做到这一点parcelables,因为我把所有从网络调用检索到的值添加到一个可变的列表 我使用kotlin插件来实现parcelable类的另一个类, 这里有另一个类的RedditChildrenDetails作为参数,我也为这个类实现了parcelable(在同一个链接中)。 class RedditChildrenResponse(val data: RedditChildrenDetails) : Parcelable { … class RedditChildrenDetails( val url: String, val title: String, val thumbnail: String, […]

在ViewHolder中使用kotlin-android-extensions

class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bindata(text: SingleText){ itemView.title.text = text.title itemView.desc.text = text.desc } } 像这样的代码,Kotlin在android扩展中有任何缓存? 当我反编译Kotlin字节码 public final void bindata(@NotNull SingleText text) { Intrinsics.checkParameterIsNotNull(text, “text”); ((AppCompatTextView)this.itemView.findViewById(id.title)).setText((CharSequence)text.getTitle()); ((AppCompatTextView)this.itemView.findViewById(id.desc)).setText((CharSequence)text.getDesc()); } 这意味着当我在Adapter.onBindViewHolder()中调用binData时,它会每次调用findViewById 这大大增加了性能的损失,并没有达到布局重用的目的 Kotlin在ViewHolder的android扩展中有任何缓存逻辑?

SwipeRefreshLayout和RecyclerView之间的差距

如何消除这两者之间的空隙? RecyclerView现在开始靠近屏幕的一半,从第一个元素到工具栏都有空白区域。 (只有当我添加足够的物品recyclerview开始顶部)。 我正在使用Kotlin和AnkoLayouts。 override fun createView(ui: AnkoContext): View = with(ui) { return relativeLayout { lparams(width = matchParent, height = matchParent) addItemButton = floatingActionButton { imageResource = android.R.drawable.ic_input_add }.lparams { margin = dip(10) alignParentBottom() alignParentEnd() alignParentRight() gravity = Gravity.BOTTOM or Gravity.END } swipeRefreshLayout = swipeRefreshLayout { rv = recyclerView { layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, true) […]

再循环查看项目选择

我有一个在kotlin中编码的recyclerview适配器。 我正在努力突出回收商视图的前四项。 我该怎么做? class BodyPartAdapter(var context: Context,var mRecyclerList: RecyclerView,var todayDate:Int, var bodyPartData: ArrayList, var bodyPartSelection: BodyPartSelection, var abc: Int, var firsttime: Boolean, var todayBodypartid: Int, b1: Boolean,var selectedBodypartId: Int, var bodyPartSelected: Boolean): RecyclerView.Adapter() { interface BodyPartSelection { fun onbodyPartClicked(firsttime:Boolean,bodyPart: BodyPart,selected:Boolean) } override fun getItemCount(): Int { return bodyPartData.size } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): […]