• Переход с maxystore 1.5 на opencart 2.3?

    Настройте 301 редиректы со старых урлов на новые. Если страниц много в индексе, посмотрите наиболее популярные страницы входа с "Яндекса" через Метрику или Analytics и настройте хотя бы для них.
    Ответ написан
    5 комментариев
  • Как получить размер ImageView?

    artemgapchenko
    @artemgapchenko
    ViewTreeObserver даёт возможность подцепиться к определённым этапам в "жизненном цикле" View, в том числе к этапу, когда размеры View были определены:

    imageview.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            //
            // Тут вы пишите ваш код, который завязан на знание размера View
            //
    
            // А тут отсоединяете OnGlobalLayoutListener
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                imageview.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            } else {
                imageview.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        } 
    });
    Ответ написан
    2 комментария
  • Можно ли управлять кнопками?

    @davidnum95
    Можно.
    AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
    AlertDialog dialog = builder
         .setView(customDialog)
         .setPositiveButton(android.R.string.ok, this)
         .setNegativeButton(android.R.string.cancel, null)
         .create());
    dialog.setOnShowListener(dialogInterface ->
                        dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(view -> {
                                // тут код
                                dialog.dismiss();
                            }
                        }));
    Ответ написан
    1 комментарий
  • Как правильно использовать Rxjava?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Нет желания разбираться в вашем коде. Возьмите Retrofit, он из коробки работает c Rx.
    Ответ написан
  • Передача и получение данных из DialogFragment?

    gadfi
    @gadfi
    https://gamega.org
    все просто
    в диалог передать данные
    CustomDialogFragment  fragment = new CustomDialogFragment ();
    Bundle bundle = new Bundle();
    bundle.putInt(key, value);
    fragment.setArguments(bundle);


    из диалога передать даныне в активти можно несколькими способами
    1) интерфейс (обязательно проверяете что активти его реализует)
    2) EventBus мне он нравится больше
    Ответ написан
    3 комментария
  • Databinding и RecyclerView как объединить?

    @AlexeyVD
    Работа с данными в RecyclerView происходит через класс адаптер. Вот когда-то накидал простенький абстрактный адаптер, когда тестировал data binding:
    public abstract class AbstractRecyclerAdapter<E> extends 
    RecyclerView.Adapter<AbstractRecyclerAdapter.BindingHolder> {
    
        private List<E> mElements;
    
        public AbstractRecyclerAdapter() {
            mElements = new ArrayList<>();
        }
    
        public abstract int getItemLayoutId();
        public abstract int getVariableId();
    
        public void setElements(List<E> elements) {
            mElements = elements;
        }
    
        @Override
        public BindingHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(getItemLayoutId(), 
                         parent, false);
            return new BindingHolder(v);
        }
    
        @Override
        public void onBindViewHolder(BindingHolder holder, int position) {
            final E element = mElements.get(position);
            holder.getBinding().setVariable(getVariableId(), element);
            holder.getBinding().executePendingBindings();
        }
    
        @Override
        public int getItemCount() {
            return mElements.size();
        }
    
        public static class BindingHolder extends RecyclerView.ViewHolder {
    
            private ViewDataBinding binding;
    
            public BindingHolder(View itemView) {
                super(itemView);
                binding = DataBindingUtil.bind(itemView);
            }
    
            public ViewDataBinding getBinding() {
                return binding;
            }
        }
    }


    Пример реализации для класса History:
    public class HistoryRecyclerAdapter<History> extends AbstractRecyclerAdapter<History> {
        public HistoryRecyclerAdapter() {
            super();
        }
    
        @Override
        public int getItemLayoutId() {
            return R.layout.item_history;
        }
    
        @Override
        public int getVariableId() {
            return BR.history;
        }
    }


    Добавляете и изменяете элементы в списке с помощью setElements() и notifyDataSetChanged():
    mRecyclerAdapter.setElements(getData());
    mRecyclerView.setAdapter(mRecyclerAdapter);
    mRecyclerAdapter.notifyDataSetChanged();


    Ну и в разметке вашего item_history должно быть объявление variable history с прочими биндингами:
    ...
        <data>
            ...
            <variable
                name="history "
                type="History " />
           ...
        </data>
    ...
    Ответ написан
    Комментировать
  • Databinding и RecyclerView как объединить?

    @Tiberal
    Обновить данные в RecyclerView. дернуть на нем notify метод(там их много выберите тот что вам подходит). RecyclerView обновит итемы, а бинды подтянут уже новые значения.
    Mожно создать метод с аннотацией BindingAdapter внутри которого обновляете данные в адаптере и дергаете нотифи, прибиндить метод к RecyclerView в аргумент ему коллекцию с данными, которую раздавать через ObservableField. Каждый раз как в коллекцию будут сетиться данные будет дергаться метод и обновлять RecyclerView
    Ответ написан
    1 комментарий
  • Разработка под android для веб-программиста - с чего начать?

    voidnugget
    @voidnugget
    Программист-прагматик
    Сore Java - первый и кусочек второго тома
    Effective Java Джошуа Блоха - обязательно
    Java Concurrency in Practice Браяна Гоетса - обязательно
    из серии Pragmatic Programmer
    Programming Concurrency on the JVM: Mastering Synchronization
    Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions
    Pragmatic Unit Testing in Java 8 with JUnit
    Ответ написан
    4 комментария