关键词:
【中文标题】如何在 Activity 内的 RecyclerView 适配器声明中声明单击侦听器【英文标题】:How to declare click listener within RecyclerView adapter declaration inside Activity 【发布时间】:2021-02-02 18:20:58 【问题描述】:我正在尝试将我的 Activity(包含 RecyclerView
)与 RecyclerView
适配器连接,但在声明部分卡住了。我知道需要指定与我的适配器类中的单击侦听器参数关联的值,但我不确定当每个 RecyclerView 项具有不同的值时应该是什么值。
mAdapter = MyAdapter(this, mList, true, ?)
关于应该用什么替换问号有什么想法吗?
活动
class MainActivity : AppCompatActivity()
private lateinit var mAdapter: MyAdapter
private val mList = ArrayList<MyItem>()
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mList.add(
ItemCompany(
getString(R.string.bing)
)
)
mList.add(
ItemCompany(
getString(R.string.google)
)
)
mList.add(
ItemCompany(
getString(R.string.yahoo)
)
)
val mRecyclerView = findViewById<RecyclerView>(R.id.myRecyclerView)
mRecyclerView.layoutManager =
androidx.recyclerview.widget.LinearLayoutManager(this)
mAdapter = MyAdapter(this, mList, true, ?)
mRecyclerView.addItemDecoration(
androidx.recyclerview.widget.DividerItemDecoration(
this,
LinearLayout.VERTICAL
)
)
mRecyclerView.adapter = mAdapter
RecyclerView 适配器
class MyAdapter(
val myContext: Context,
var listCompany: MutableList<ItemCompany>,
private val mTwoPane: Boolean,
private val itemClickListener: AdapterView.OnItemClickListener
) : androidx.recyclerview.widget.RecyclerView.Adapter<MyAdapter
.CompanyViewHolder>()
class CompanyViewHolder(itemView: View) : androidx.recyclerview.widget.RecyclerView
.ViewHolder(itemView)
var tvTitle: TextView = itemView.findViewById(R.id.tv_RVItem)
fun bind(company: ItemCompany, clickListener: AdapterView.OnItemClickListener)
tvTitle.text = company.companyName
itemView.setOnClickListener v ->
val intent: Intent = when (company.companyName)
v.resources.getString(R.string.bing) ->
Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.bing.com/"))
v.resources.getString(R.string.google) ->
Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.google.com/"))
else ->
Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.yahoo.com/"))
itemView.getContext.startActivity(intent)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CompanyViewHolder
val inflater = LayoutInflater.from(myContext)
val v = inflater.inflate(R.layout.rv_item, parent, false)
return CompanyViewHolder(v)
override fun onBindViewHolder(holder: CompanyViewHolder, position: Int)
val product = listCompany[holder.adapterPosition]
holder.tvTitle.text = product.companyName
holder.bind(product, itemClickListener)
override fun getItemCount(): Int
return listCompany.size
override fun getFilter(): Filter
return companyFilter
【问题讨论】:
【参考方案1】:您可以使用 lamda 声明您的点击侦听器:
val mListener = AdapterView.OnItemClickListener parent, view, position, id ->
val mAdapter = MyAdapter(this, mList, true, mListener)
或者简单地说:
val mAdapter = MyAdapter(this, mList, true) parent, view, position, id ->
【讨论】:
recyclerview 内的 RecyclerView 只显示父 recyclerview 的最后一项
】recyclerview内的RecyclerView只显示父recyclerview的最后一项【英文标题】:RecyclerViewinsiderecyclerviewshowsonlylastitemsofparentrecyclerview【发布时间】:2021-01-0900:38:34【问题描述】:我在父recyclerview中有一个子recyclerview。只有父recyclerview的最... 查看详情
在 Fragment 中集成 Map 而不是 Activity
】在Fragment中集成Map而不是Activity【英文标题】:IntegrateMapinFragmentinsteadofActivity【发布时间】:2021-01-1019:00:35【问题描述】:我想在MainActivity内的片段中添加Google地图。但我在以下语句中遇到错误。这个fusedLocationProviderClient=Locatio... 查看详情
关于activity
Activity与界面 1.Activity相当于浏览器的标签。相当于空白的网页,界面相当于浏览器内的网页。 2.将Activity与界面绑定就相当于在浏览器内填写了相应的网页... 查看详情
如何在 Activity(非 AppCompatActivity)中打开片段?
】如何在Activity(非AppCompatActivity)中打开片段?【英文标题】:HowtoopenafragmentinaActivity(non-AppCompatAcitivity)?【发布时间】:2020-11-1521:25:35【问题描述】:正如标题所述,我想打开一个位于Activity(NonAppCompatActivity)中的Fragment代码:Tab... 查看详情
如何在view中取得activity对象
参考技术A今天想实现在view中返回上一个activity的功能,想了半天。因为在虽然view是包含于一个activity的,但是直接在view中用this取得的对象不是activity而是这个view,直接写activity的名字也不行。于是找到了这个方法并附上!首先... 查看详情
如何在 Fragment 和未附加的 Activity 之间进行通信?
】如何在Fragment和未附加的Activity之间进行通信?【英文标题】:HowtocommunicatebetweenaFragmentandanActivitytowhichitisnotattached?【发布时间】:2015-11-1213:38:51【问题描述】:我想在片段上的onClick事件之后对Activity执行一些操作。我只发现了... 查看详情
从活动中获取片段内的按钮
...取片段内的按钮【英文标题】:getabuttonwithinafragmentfromtheactivity【发布时间】:2014-06-2820:34:33【问题描述】:我该怎么做?或者甚至有可能从activity获得fragment中的button?我尝试了很多东西,例如试图获取片段的视图或容器,但没... 查看详情
如何在不启动新 Activity 的情况下清除 Android 上的先前 Activity
】如何在不启动新Activity的情况下清除Android上的先前Activity【英文标题】:HowtoclearpreviousActivityonAndroidwithoutstartnewActivity【发布时间】:2021-10-2203:18:40【问题描述】:我想清除以前的活动,但没有在android上启动新活动。通常我在... 查看详情
如何在一个 Activity 中显示 listview 和 webview?
】如何在一个Activity中显示listview和webview?【英文标题】:HowtodisplayalistviewandawebviewinoneActivity?【发布时间】:2016-08-3002:51:36【问题描述】:所以我试图在一个Activity中实现两个API,并在同一个Activity中为我的第二个API显示listview和... 查看详情
如何在 Kotlin 中访问“Activity.this”?
】如何在Kotlin中访问“Activity.this”?【英文标题】:Howtoaccess"Activity.this"inKotlin?【发布时间】:2017-05-2718:55:22【问题描述】:我有这段Java代码:MaterialDialogbuilder=newMaterialDialog.Builder(MainActivity.this)我想在Kotlin中获取MainActivi... 查看详情
如何在适配器中启动 Activity?
】如何在适配器中启动Activity?【英文标题】:HowtostartActivityinadapter?【发布时间】:2011-05-1023:23:16【问题描述】:我有一个带有自定义适配器的ListActivity,在每个视图中,它可能有一些按钮,我需要在其中实现OnClickListener。我需... 查看详情
由于 Activity 重新创建,Progressdialog 无法关闭
】由于Activity重新创建,Progressdialog无法关闭【英文标题】:ProgressdialogfailstogetdismissedbecauseofActivityrecreate【发布时间】:2017-04-1000:59:02【问题描述】:我有一个对话框,它在Activity创建期间syasLoading和一个dialog.dismiss稍后在可运行... 查看详情
如何判断activity是否在前台显示
...android00/article/223.html我们在Android开发过程中,经常会判断Activity是否在前台显示,来处理某些状态,这里谢了一个静态方法,供大家参考。方法一:用ActivityManager管理的Activity栈来操作public class CommonU 查看详情
在 Activity 重新创建时如何确定 Fragment 恢复?
】在Activity重新创建时如何确定Fragment恢复?【英文标题】:WhattodetermineaFragmentrestoreuponActivityre-create?【发布时间】:2013-03-1111:03:44【问题描述】:对于有ID的Views,调用super.onSaveInstanceState(outState);时会自动保存。对于添加到Activity... 查看详情
Activity 及其 Views 生命周期如何在 android 中重叠
】Activity及其Views生命周期如何在android中重叠【英文标题】:HowcanActivityanditsViewslifecyclesoverlapinandroid【发布时间】:2020-06-0817:16:33【问题描述】:android中有两个生命周期,基本上是一个Activity生命周期和一个ViewLifeCycle,但是ViewLi... 查看详情
如何在androidapp中设置系统语言
...果在设置界面打开切换语言的界面,选择语言后重启HomeActivity,语言切换完成,下次重新打开App,也是用户设置的语言。工具编程软件;实现步骤在不同的value文件夹下添加不同语言的 string.xml 文件,项目添加了英文、简... 查看详情
Android - 如何在非 Activity 类中使用 SharedPreferences?
】Android-如何在非Activity类中使用SharedPreferences?【英文标题】:Android-HowtouseSharedPreferencesinnon-Activityclass?【发布时间】:2011-11-2110:06:12【问题描述】:如何在非Activity类中使用SharedPreferences?我尝试制作一个通用的Preferenc... 查看详情
如何在 Android 上创建一个透明的 Activity?
】如何在Android上创建一个透明的Activity?【英文标题】:HowdoIcreateatransparentActivityonAndroid?【发布时间】:2011-01-1117:25:10【问题描述】:我想在另一个Activity之上创建一个透明的Activity。我怎样才能做到这一点?【问题讨论】:你... 查看详情