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


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একটি সময় লাগে Booleanhttps://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.