Как сделать приложение: атрибуты записей динамическим? - PullRequest
0 голосов
/ 02 января 2019

attr.xml

<declare-styleable name="PaymentCustomView">
    <attr name="customViewTitle" format="string" />
    <attr name="customViewSubtitle" format="string" />
    <attr name="android:entries" />
</declare-styleable>

make_payment.xml

    <com.laterpay.MakePaymentCustomView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/blue_column"
        app:customViewSubtitle="100"
        app:customViewTitle="Maximum Spending"
        app:entries="@{vm.vouchers}"/>

CustomView.java

public class MakePaymentCustomView extends LinearLayout {
    private Context _context;
    public MakePaymentCustomView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        _context = context;
        setOrientation(LinearLayout.VERTICAL);
        LayoutInflater.from(context).inflate(R.layout.make_payment_custom_layout, this, true);
        String title;
        String subtitle;
        TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.PaymentCustomView, 0, 0);
        try {
            title = a.getString(R.styleable.PaymentCustomView_customViewTitle);
            subtitle = a.getString(R.styleable.PaymentCustomView_customViewSubtitle);
            CharSequence[] entries = a.getTextArray(R.styleable.PaymentCustomView_android_entries);
            if(entries != null){
                //do something
                Log.d("Entries:",entries.toString());
            }
        } finally {
            a.recycle();
        }
        // Throw an exception if required attributes are not set
        if (title == null) {
            throw new RuntimeException("No title provided");
        }
        if (subtitle == null) {
            throw new RuntimeException("No subtitle provided");
        }

        init(title, subtitle);
    }
    // Setup views
    private void init(String title, String subtitle) {
        List<String> categories = new ArrayList<String>();
        categories.add("Automobile");
        categories.add("Business Services");
        categories.add("Computers");
        categories.add("Education");
        categories.add("Personal");
        categories.add("Travel");
        TextView titleView = findViewById(R.id.customview_textview_title);
        TextView subtitleView = findViewById(R.id.customview_textview_subtitle);
        Spinner voucherList = findViewById(R.id.voucherSpinner);
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(_context, android.R.layout.simple_spinner_item, categories);
        voucherList.setAdapter(dataAdapter);
        titleView.setText(title);
        subtitleView.setText(subtitle);
    }

Я хотел бы заполнить мой Spinner набором динамических данных, которые я получаю из API. Но проблема в том, как я могу передать эти данные в пользовательское представление и заполнить счетчик (voucherList)?

Задание A передает некоторые данные в занятие B, которое содержит это настраиваемое представление. Как я могу заполнить данные в спиннер пользовательского представления?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Ваш customedView должен иметь пользовательский адаптер или приватную переменную с методом setter. Затем вы можете вставить ваш customedView во всплывающее окно, которое будет отображать действие B.

0 голосов
/ 02 января 2019

Отметьте это
Сначала вы вызовете REST-API, а затем передадите те сборочные / динамические данные, которые вы упомянули, в другое действие, показанное в ссылке.

...