দৃশ্যমানতাটি সেট করতে ডেটা বাইন্ডিং ব্যবহার করুন


97

দৃশ্যমানতা সেট করার চেষ্টা করছেন Viewকাস্টম পরিবর্তনশীল ব্যবহার করে, কিন্তু ত্রুটি দেখা দেয়: Identifiers must have user defined types from the XML file. visible is missing it। ডেটা বাঁধাই ব্যবহার করে দর্শন দৃশ্যমানতা সেট করা সম্ভব? ধন্যবাদ

<data>
    <variable
        name="sale"
        type="java.lang.Boolean"/>
</data>

<FrameLayout android:visibility="@{sale ? visible : gone}"/>

উত্তর:


218

অ্যান্ড্রয়েড বিকাশকারী নির্দেশিকায় যেমন বলা হয়েছে , আপনার এটি এটির মতো করা দরকার:

<data>
    <import type="android.view.View"/>
    <variable
        name="sale"
        type="java.lang.Boolean"/>
</data>

<FrameLayout android:visibility="@{sale ? View.GONE : View.VISIBLE}"/>

4
এবং কীভাবে "বিক্রয়" এর মান সেট করবেন?
— রবিনহুড

সুতরাং আপনার অর্থ কীভাবে স্ট্রিং ভেরিয়েবলের জন্য "বিক্রয়" মান নির্ধারণ করবেন?
— ডেভিড আর্টম্যান

ঠিক! আমি সমস্যার মুখোমুখি হয়েছি। দয়া করে ভাগ করুন আমি তুলনা করব এবং তারপরে আপনাকে জানাব।
— রবিনহুড

39
ধুর! ছাই! আমি কীভাবে সিলি আমদানি মিস করেছি । সম্পন্ন, ধন্যবাদ।
— রবিনহুড

আরে! কোন ধারণা কেন স্ক্রোল উপর অবস্থান ভুল? অ্যাডাপ্টার
— রবিনহুড

56

আপনার লেআউটে:

<data>
    <variable
        name="viewModel"
        type="...."/>
</data>


<View
 android:layout_width="10dp"
 android:layout_height="10dp"
 android:visibility="@{viewModel.saleVisibility, default=gone}"/>

আপনার ভিউমোডেল জাভা কোডে:

@Bindable
public int getSaleVisibility(){
 return mSaleIndecator ? VISIBLE : GONE;
}

4
আপনি আমাকে একটি সামান্য মাথা ব্যাথা থেকে বাঁচিয়েছেন
— কোএন ভ্যান লুভেরেন

4
এটির জন্য আপনার ডেটা মডেলটি পর্যবেক্ষণযোগ্য হতে হবে।
— ইয়াহাক

এই আমার জন্য কাজ ছাড়া সহ @Bindable। আমি যখন অন্তর্ভুক্ত করেছি যে আমি প্রসারিত করার পরামর্শ সহ বিভিন্ন বাঁধাই ত্রুটি পেয়েছি BaseObservable। এখানে ভাল পয়েন্টার
— জিন বো

4
গ্রহণযোগ্য উত্তর হতে হবে! এটি আমার জন্য নিখুঁতভাবে কাজ করেছে!
— ক্রিসিক

কোন পরামর্শ LiveData<Boolean>?
— সৌরভ বাগচি

41

সমস্যা হল visibilityএকজন Integerউপর Viewবর্গ, এর অর্থ হল আপনি এই কাজ করার জন্য দুটি উপায় আছে:

  1. View.VISIBLEএবং View.GONEধ্রুবক ব্যবহার করুন । https://developer.android.com/topic/libraries/data-binding/index.html#imports
  2. একটি কাস্টম সেটার নির্ধারণ জন্য visibilityএকটি সময় লাগে Boolean। https://developer.android.com/topic/libraries/data-binding/index.html#custom_setters

সম্ভাব্য বাস্তবায়ন:

@BindingAdapter("android:visibility")
public static void setVisibility(View view, Boolean value) {
    view.setVisibility(value ? View.VISIBLE : View.GONE);
}

যা <FrameLayout android:visibility="@{sale}"/>কাজ করবে ।


4
এটি আপনার পক্ষে যেখানে সুবিধাজনক সেখানে সংকলনের সময় টিকা প্রোটেসর স্বয়ংক্রিয়ভাবে সেগুলি সনাক্ত করে।
— কিস্কে

আপনাকে ধন্যবাদ, আমি এটিকে আমার বাইন্ডিংটিলস.জভাতে রেখেছি
— nhoxbypass

কিন্তু মূল্য বিক্রয় সেট কিভাবে?
— এস্লামওয়েল 74

4
<ট্যাগ অন্তর্ভুক্ত করতে আমি কীভাবে একই পদ্ধতির প্রয়োগ করতে পারি?
— জাফার সেলাগলু

4
@ এস্লামওয়াল ৪৪ আপনি আপনার জাভা / কোটলিন কোডে বাইন্ডিংয়ের মাধ্যমে বিক্রয় মূল্য নির্ধারণ করেছেন। ভাল বাঁধাইয়ের মতো = MyClassBinding.inflate (...), এবং তারপরে আপনি কেবল বাঁধাই করতে পারেন aleসেল = সত্য।
— ম্যাট রবার্টসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.