小编Pra*_*tre的帖子

如果该位置的视图在屏幕上不可见或滚出,则 Android Recyclerview notifyItemChanged(position ,payLoad) 不起作用

RecyclerView在我的应用程序中使用它有itemViewCache20 个项目,因为我的列表的最大可能大小为 20。它是“单个项目选择列表”。现在当列表加载时,第一个单元格将突出显示为默认选定位置。如果我单击不同位置的单元格,该位置的视图将被选中并突出显示,同时先前选择的视图变为白色,即未选中。以上工作正常,因为我使用adapter.notifyDataSetChanged(position, payLoad)方法更新列表中的数据。但是当当前选定位置的单元格滚动出屏幕并且我尝试选择新位置时,但是新单元格抓住突出显示并被选中,它不会使以前选择的单元格变白。对于滚动出位置的单元格,系统甚至不调用notifyDataSetChanged(positioin, payLoad)在其中制作 ui 的方法。任何帮助将不胜感激,因为我与RecyclerViews.

这是我的适配器的代码:

class EventsCalendarAdapter(var eventSectionedFrag: EventSectionedFrag, var arrayList: ArrayList<String>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    val view = LayoutInflater.from(parent.context).inflate(R.layout.adapter_calendar_months, parent, false)
    return CalendarHolder(view)
}

override fun getItemCount() = arrayList.size


override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, payloads: MutableList<Any>) {
    if (payloads.isNotEmpty()) {
        var bundle = payloads[0] as Bundle
        var isSelected: Boolean? = bundle.getBoolean("selected")
        var setCurrentMonthSelected: Boolean? = bundle.getBoolean("setMonth")


        with(holder) { …
Run Code Online (Sandbox Code Playgroud)

android android-layout kotlin android-recyclerview

5
推荐指数
1
解决办法
4563
查看次数

添加第三方生成器时,Flutter build_runner 构建失败

我写了一个工作正常的颤振项目,我能够正确地构建它,但是当我添加 retrofit_generator 时,构建失败了,如果我删除生成器,代码运行良好,构建也会成功。这是错误,

不支持的操作:无法解析 file:///C:/Users/User/AndroidStudioProjects/digigad/lib/resources/network/repository.dart; 仅支持“包”和“资产”方案 [严重] retrofit_generator:retrofit on lib/ui/login/login_view.dart:

这是我的 login_view.dart 代码

 class LoginView extends StatefulWidget {
  @override
  _LoginViewState createState() => _LoginViewState();
}

class _LoginViewState extends State<LoginView> {
  LoginViewModel _loginViewModel;

  @override
  void initState() {
    super.initState();
    _loginViewModel = locator<LoginViewModel>();
  }

  @override
  Widget build(BuildContext context) {
    return ViewModelBuilder<LoginViewModel>.nonReactive(
        builder: (context, model, child) {
          return Scaffold(
            backgroundColor: Colors.white,
            body: SafeArea(
              child: Padding(
                padding: const EdgeInsets.all(30.0),
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.spaceAround,
                  children: <Widget>[
                    Container(
                      child: Center(
                        child: Container(
                          child: Image.asset('images/iv_logo.png'),
                          width: 100,
                          height: 100, …
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
1
解决办法
1243
查看次数