如何在适配器中执行最新的喷气背包“视图绑定”,以自动绑定视图。我没有使用 findVeiwById 或 Butterknife 或 Kotlin 合成工具???我已经使用了新的视图绑定,并且对于 Activity 和 Fragment 工作正常。在 build.gradle 文件中启用 viewBinding 后,我能够看到 ActivityHomeBinding 和 FragmentHomeBinding 文件。另外,我看到了用于项目 xml 的 ItemListBinding 类,即 item_list.xml。但是如何在recyclerview的adapter中使用这个文件
viewBinding {
enabled = true
}
Run Code Online (Sandbox Code Playgroud)
主页活动文件
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)
}
Run Code Online (Sandbox Code Playgroud)
分段
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = FragmentHomeBinding.inflate(inflater, container, false)
val view = binding.root
return view
}
Run Code Online (Sandbox Code Playgroud)
Base Adapter:想在这里使用视图绑定。我能够看到 ItemListBinding,但不知道如何使用它。
class BaseAdapter @Inject constructor(
private val context: Context,
private val picasso: …Run Code Online (Sandbox Code Playgroud) 我正在添加一个视图,该视图具有images(socialView)集合视图单元格内的一组视图(也具有其他视图),必须在该视图上执行公共单击。此单击不应与集合视图单元格单击相同。
我正在考虑在委托方法中添加UITapGestureRecognizerfor socialVieweverytime 。但我想知道这是正确的方法吗?此外,我想获取已被调用的索引路径/位置。CollectionViewcellForItemAtsocialView
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.socialViewTapped))
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "bidderAuctionCell", for: indexPath) as! BidderAuctionViewCell
cell.socialView.addGestureRecognizer(tapGestureRecognizer)
}
@objc func socialViewTapped() {
// Which item cell's socialview is clicked
}
Run Code Online (Sandbox Code Playgroud)
更新
我已按照以下建议完成,但我无法知道应该在自定义单元格中添加 UITapGestureRecognizer 的位置。以下是我创建的自定义单元格。
class CustomViewCell: UICollectionViewCell {
var index : IndexPath!
var socialViewDelegate : SocialViewDelegate!
@IBOutlet weak var socialView: UIView!
override init(frame: CGRect) {
super.init(frame:frame)
let tapGestureRecognizer …Run Code Online (Sandbox Code Playgroud) 刚刚谷歌已经将 Kotlin 作为官方编程语言,所以开始将我的文件转换为 Kotlin。
在转换代码时,当我尝试使用 supportActionBar 时,我总是遇到空指针异常
// set up action bar
setSupportActionBar(mToolbar)
supportActionBar!!.setDisplayShowTitleEnabled(false)
// set the hamburger menu
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
supportActionBar!!.setHomeButtonEnabled(true)
Run Code Online (Sandbox Code Playgroud)
我的 AndroidManifest 条目是
<activity android:name=".activities.MainActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar />
Run Code Online (Sandbox Code Playgroud)
没有操作栏将 windowActionBar 设置为 false。每次运行应用程序时,访问 supportActionBar 时都会出现空指针异常。谁能帮我解决这个问题吗?