Ravi Rupareliya Ravi Rupareliya - 2 months ago 42
Android Question

position of ViewPager item with Data Binding

I have implemented

ViewPager
with use of android Data Binding, it is working perfect with data and click events.

I have created
interface
for click event

public interface ItemClickListener {
public void onItemClick();
}


Here is my
instantiateItem()
of
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();
}


i am sending
itemClickListener
in adapter constructor.

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


Here is my
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>


Now problem is that i want to pass position of clicked item, how to pass that position from xml? As i have called my method from xml how to pass position?

Answer

You can pass view in interface

 public interface ItemClickListener {
     public void onItemClick(View view);
  }

Than set position in tag which you already doing

binding.getRoot().setTag(position);

And than you can get position from that view param like this

@Override
public void onItemClick(View view){
  int position=(int)view.getTag();
}

For more detail info you can refer http://developers-club.com/posts/267735/

Comments