package com.fastaccess.ui.widgets.dialog; import android.content.Context; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; import com.fastaccess.R; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.ui.adapter.SimpleListAdapter; import com.fastaccess.ui.base.BaseDialogFragment; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; import com.fastaccess.ui.widgets.FontTextView; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; import net.grandcentrix.thirtyinch.TiPresenter; import java.util.ArrayList; import java.util.List; import butterknife.BindView; /** * Created by Kosh on 31 Dec 2016, 3:19 PM */ public class ListDialogView<O extends Parcelable> extends BaseDialogFragment implements BaseViewHolder.OnItemClickListener<O> { public static final String TAG = ListDialogView.class.getSimpleName(); @BindView(R.id.title) FontTextView title; @BindView(R.id.recycler) DynamicRecyclerView recycler; public interface onSimpleItemSelection<O extends Parcelable> { void onItemSelected(O item); } @Nullable private onSimpleItemSelection onSimpleItemSelection; @Override protected int fragmentLayout() { return R.layout.simple_list_dialog; } @Override protected void onFragmentCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { ArrayList<O> objects = getArguments().getParcelableArrayList(BundleConstant.ITEM); String titleText = getArguments().getString(BundleConstant.EXTRA); title.setText(titleText); if (objects != null) { SimpleListAdapter<O> adapter = new SimpleListAdapter<>(objects, this); recycler.setAdapter(adapter); } else { dismiss(); } } @Override public void onAttach(Context context) { super.onAttach(context); if (getParentFragment() != null && getParentFragment() instanceof onSimpleItemSelection) { onSimpleItemSelection = (onSimpleItemSelection) getParentFragment(); } else if (context instanceof onSimpleItemSelection) { onSimpleItemSelection = (onSimpleItemSelection) context; } } @Override public void onDetach() { super.onDetach(); onSimpleItemSelection = null; } @NonNull @Override public TiPresenter providePresenter() { return new BasePresenter(); } @SuppressWarnings("unchecked") @Override public void onItemClick(int position, View v, O item) { if (onSimpleItemSelection != null) { onSimpleItemSelection.onItemSelected(item); } dismiss(); } @Override public void onItemLongClick(int position, View v, O item) { onItemClick(position, v, item); } public void initArguments(@NonNull String title, @NonNull ArrayList<O> objects) { setArguments(Bundler.start() .put(BundleConstant.EXTRA, title) .putParcelableArrayList(BundleConstant.ITEM, objects) .end()); } public void initArguments(@NonNull String title, @NonNull List<O> objects) { setArguments(Bundler.start() .put(BundleConstant.EXTRA, title) .putParcelableArrayList(BundleConstant.ITEM, (ArrayList<? extends Parcelable>) objects) .end()); } }