微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用android中的数据绑定检测回收器视图中的onClick

>我参考vogella-tutorial进行数据绑定
>我要做的是:使用dataBinding检测每个Item的回收器视图行中的onClick的最佳方法是什么

activity_second.xml

rowlayout.xml

ottom="true"
            android:layout_alignParentTop="true"
            android:layout_marginRight="6dip"
            android:contentDescription="Todo"
            android:src="@drawable/ic_listentry"
            />

        ottom="true"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@id/icon"
            android:ellipsize="marquee"
            android:text="@{obj.location}"
            android:textSize="12sp"
            android:maxLines="1"
        />

        irstLine"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_above="@id/secondLine"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_alignWithParentIfMissing="true"
            android:layout_toRightOf="@id/icon"
            android:gravity="center_vertical"
            android:text="@{obj.celsius}"
            android:textSize="16sp"
            />

    

MyAdapter.java

public class MyAdapter extends RecyclerView.Adaptertvariable(BR.obj,obj);
                       binding.executePendingBindings();
                }
        }

        // Provide a suitable constructor (depends on the kind of dataset)
        public MyAdapter(Listarameters
                return new MyViewHolder(binding);
        }

        // Replace the contents of a view (invoked by the layout manager)
        @Override
        public void onBindViewHolder(MyViewHolder holder,int position) {
                final TemperatureData temperatureData = data.get(position);
                holder.bind(temperatureData);

        }

        // Return the size of your dataset (invoked by the layout manager)
        @Override
        public int getItemCount() {
            return data.size();
        }

}

MyAdapter.java

public class MyAdapter extends MyBaseAdapter {

    List
最佳答案
不确定你是否已找到解决方案,但我设法很容易做到了.

1)修改onCreateViewHolder方法,如下所示:

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
    // create a new view
    LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
    ViewDataBinding binding = DataBindingUtil.inflate(layoutInflater,false);

    MainActivityPresenter presenter = new MainActivityPresenter(this,parent.getContext());
    binding.setvariable(BR.presenter,presenter);

    // set the view's size,paddings and layout parameters
    return new MyViewHolder(binding);
}

2)使MyAdapter实现MainActivityContract.View,最后看起来如下:

公共类MyAdapter扩展了RecyclerView.Adapter< MyAdapter.MyViewHolder>实现MainActivityContract.View

3)在MyAdapter中实现必要的方法;例如:

@Override
public void showData(TemperatureData data) {
    String clickedItemCelsius = data.getCelsius();
}

4)将Presenter变量添加到行布局文件中:

    viewmodels.MainActivityPresenter"/>

5)最后在Re​​lativeLayout下挂钩你的onClick事件:

希望能帮助到你!

原文地址:https://www.jb51.cc/android/430149.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐