数据绑定的ViewPager项的位置

Rav*_*avi 5 data-binding android android-databinding

我已经实现ViewPager了使用android数据绑定,它可以完美地处理数据和click事件。

我已interface为点击事件创建

public interface ItemClickListener {
    public void onItemClick();
}
Run Code Online (Sandbox Code Playgroud)

这是我instantiateItem()PagerAdapter

@Override
public Object instantiateItem(ViewGroup container, final int position) {
    ListItemBinding binding = DataBindingUtil.inflate(mLayoutInflater, R.layout.list_item, container, false);
    binding.setHandler(itemClickListener);
    binding.getRoot().setTag(position);
    container.addView(binding.getRoot());
    return binding.getRoot();
}
Run Code Online (Sandbox Code Playgroud)

我正在发送itemClickListener适配器构造函数。

public MatchListAdapter(Context context, ItemClickListener itemClickListener) {
    mContext = context;
    mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.itemClickListener= itemClickListener;
}
Run Code Online (Sandbox Code Playgroud)

这是我的 list_item.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
           name="handler"
           type="com.example.ItemClickListener" />
    </data>

    <LinearLayout
        android:id="@+id/root_viewItem"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:onClick="@{() -> handler.onItemClick()}"
        android:orientation="vertical">

        //rest views and controls.

   </LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

现在的问题是我想传递被单击项的位置,如何从xml传递该位置?正如我从xml调用我的方法时如何传递位置?

Bur*_*hid 5

您可以在界面中传递视图

 public interface ItemClickListener {
     public void onItemClick(View view);
  }
Run Code Online (Sandbox Code Playgroud)

比在您已经做过的标签中设置位置

binding.getRoot().setTag(position);
Run Code Online (Sandbox Code Playgroud)

这样一来,您就可以从该视图参数中获得位置

@Override
public void onItemClick(View view){
  int position=(int)view.getTag();
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅http://developers-club.com/posts/267735/