Ich versuche, die Erhöhung und Verringerung der Menge in einem TextView mit Handlern zu implementieren, aber immer wirft es den gleichen Fehler bitte helfen Sie mir zu verstehen, wo ich fehlen, um das erwartete Ergebnis zu erhalten .Binding Buttons mit Increment und Dekrement Handler in android Databinding
Fehler: Ausführung fehlgeschlagen für Task ': app: compileDebugJavaWithJavac'.
java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Identifiers must have user defined types from the XML file. view is missing it file:C:\Users\Tushar Rai\Desktop\Demo\Demo\app\src\main\res\layout\fragment_list.xml ****\ data binding error ****
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="quantity"
type="int"/>
<variable
name="Handlers"
type="com.demo.www.demo.ui.Fragment.Handlers"/>
<import type="android.view.View"/>
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentEnd="true"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/decrease"
android:onClick="@{Handlers.decrement(view, 0)}" />
<TextView
android:layout_width="32dp"
android:layout_height="wrap_content"
app:quantity="@{quantity}"
android:textAlignment="center" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/increase"
android:onClick="@{Handlers.increment(view, 10)}" />
</LinearLayout>
public class Fragment erstreckt Fragment {
FirebaseRecyclerAdapter adapter;
Firebase mFirebaseRef = new Firebase("https://demo.firebaseio.com/").child("list");
public Fragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View rootView = inflater.inflate(R.layout.recycler_view, container, false);
final RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
adapter = new FirebaseRecyclerAdapter<List, ViewHolder>(List.class, R.layout.fragment_list,
ViewHolder.class, mFirebaseRef) {
@Override
protected void populateViewHolder(ViewHolder viewHolder, List list, int i) {
FragmentBinding binding = viewHolder.getBinding();
binding.setList(list);
Handlers handlers = new Handlers();
binding.setHandlers(handlers);
}
};
recyclerView.setAdapter(adapter);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), null));
return rootView;
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public FragmentBinding binding;
public ViewHolder(View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
itemView.setOnClickListener(this);
}
public FragmentBinding getBinding() {
return binding;
}
@Override
public void onClick(View v) {
}
}
@BindingAdapter("imageUrl")
public static void setImage(ImageView imageView, String imageUrl) {
Picasso.with(imageView.getContext()).load(imageUrl).into(imageView);
}
@BindingAdapter("quantity")
public static void setQuantityText(TextView view, int quantity) {
view.setText(String.valueOf(quantity));
}
public class Handlers {
public void decrement(View view, int min) {
FragmentBinding binding = DataBindingUtil.findBinding(view);
binding.setQuantity(Math.min(min, binding.getQuantity() - 1));
}
public void increment(View view, int max) {
FragmentBinding binding = DataBindingUtil.findBinding(view);
binding.setQuantity(Math.max(max, binding.getQuantity() + 1));
}
}
}
ich es tat, aber es ist auch nicht Arbeiten, ich mache dies aus einer Lösung, die mir auf meine andere Frage verwiesen, schauen Sie http: //stackoverflow.c om/questions/37066497/layout-binding-integer-wert-limit-from-0-to-10-in-android-mit-datenbindung –
haben Sie es versucht, indem Sie Ihr Projekt gereinigt? Einige DataBinding-Fehler werden ohne Grund angezeigt, was durch das Reinigungsprojekt – Sayem
automatisch behoben wird. Ja, die Caches wurden auch mehrmals bereinigt und sogar ungültig gemacht, aber nichts passiert –