Ich folge Android Archt. component um ein Projekt zu erstellen. Nach den Leitlinien habe ich CataloguesAdapter Verlängerung DataBoundListAdapter als einen benutzerdefinierten Adapter namens erstellt:Binding Event nicht auf Adapter
public class CataloguesAdapter extends DataBoundListAdapter<CatalogueEntity, CatalogueItemBinding> {
private final android.databinding.DataBindingComponent dataBindingComponent;
private final ContributorClickCallback callback;
private CatalogueItemBinding mBinding;
public CataloguesAdapter(DataBindingComponent dataBindingComponent,
ContributorClickCallback callback) {
this.dataBindingComponent = dataBindingComponent;
this.callback = callback;
}
@Override
protected CatalogueItemBinding createBinding(ViewGroup parent) {
mBinding = DataBindingUtil
.inflate(LayoutInflater.from(parent.getContext()),
R.layout.catalogue_item, parent, false,
dataBindingComponent);
//while this click event is working fine
mBinding.getRoot().setOnClickListener(v -> {
CatalogueEntity catalogueEntity = mBinding.getCatalogue();
if (catalogueEntity != null && callback != null) {
callback.onClick(catalogueEntity);
}
});
//todo:not working, this event is not firing
mBinding.deleteIcon.setOnClickListener(v-> callback.onItemDelete());
return mBinding;
}
}
ich Swipe bin der Umsetzung Layout auf Recycler Ansicht zu löschen. Im Folgenden finden Sie die XML-Layout Listenpunkt:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="catalogue"
type="com.mindtree.igxbridge.traderapp.datasource.local.entity.CatalogueEntity" />
</data>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardUseCompatPadding="true">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/view_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorRed">
<ImageView
android:id="@+id/delete_icon"
android:layout_width="@dimen/dimen_30_dp"
android:layout_height="@dimen/dimen_30_dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dimen_10_dp"
app:srcCompat="@drawable/ic_delete"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dimen_10_dp"
android:layout_toStartOf="@id/delete_icon"
android:text="@string/text_delete"
android:textColor="@color/Material.87.white"
android:textSize="14sp" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/view_foreground"
android:layout_width="match_parent"
android:background="#FFFFFF"
android:layout_height="wrap_content">
<android.support.v7.widget.AppCompatImageView
android:id="@+id/arrow_icon"
android:layout_width="@dimen/dimen_30_dp"
android:layout_height="@dimen/dimen_30_dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dimen_10_dp"
app:srcCompat="@drawable/ic_arrow_right" />
</RelativeLayout>
</FrameLayout>
</android.support.v7.widget.CardView>
</layout>
Eine weitere Operation wie Swipe links/rechts funktioniert gut, aber auf Schaltfläche Löschen Ereignis klicken wird nicht aufgerufen zu werden.
Ich habe versucht, findViewbyId zu überprüfen und Klickereignis dadurch zu registrieren, aber kein Glück damit auch. Während CatalogueItemBinding ordnungsgemäß registriert ist, kann ich keine andere Fehlerquelle finden.
Danke.
Ich habe Swipe zum Löschen implementiert. Während swiping view_background erscheint, erscheint die Schaltfläche Delete. Ich sollte also auf die Schaltfläche Löschen klicken können. – prdp89