diff --git a/app/src/main/java/org/houxg/leamonax/adapter/NotebookAdapter.java b/app/src/main/java/org/houxg/leamonax/adapter/NotebookAdapter.java index 2ce5e9c..dc950f0 100644 --- a/app/src/main/java/org/houxg/leamonax/adapter/NotebookAdapter.java +++ b/app/src/main/java/org/houxg/leamonax/adapter/NotebookAdapter.java @@ -30,9 +30,23 @@ public class NotebookAdapter extends RecyclerView.Adapter mStack = new Stack<>(); private List mData; private NotebookAdapterListener mListener; + private boolean mHasAddButton = true; + private boolean mCanOpenEmpty = true; + private int currentSelection = -1; - public void setListener(NotebookAdapterListener listener) { + public NotebookAdapter setListener(NotebookAdapterListener listener) { mListener = listener; + return this; + } + + public NotebookAdapter setHasAddButton(boolean hasAddButton) { + mHasAddButton = hasAddButton; + return this; + } + + public NotebookAdapter setCanOpenEmpty(boolean canOpenEmpty) { + mCanOpenEmpty = canOpenEmpty; + return this; } public void refresh() { @@ -52,7 +66,7 @@ public class NotebookAdapter extends RecyclerView.Adapter notebooks = AppDataBase.getAllNotebook(AccountService.getCurrent().getUserId()); - int currentSelection = -1; - String[] titles = new String[notebooks.size()]; - for (int i = 0; i < titles.length; i++) { - titles[i] = notebooks.get(i).getTitle(); - if (notebooks.get(i).getNotebookId().equals(mNoteBookId)) { - currentSelection = i; + DialogUtils.selectNotebook(getActivity(), getString(R.string.select_notebook), new DialogUtils.SelectNotebookListener() { + @Override + public void onNotebookSelected(Notebook notebook) { + mNoteBookId = notebook.getNotebookId(); + mNotebookTv.setText(notebook.getTitle()); } - } - new AlertDialog.Builder(getActivity()) - .setTitle(R.string.choose_notebook) - .setSingleChoiceItems(titles, currentSelection, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Notebook selected = notebooks.get(which); - mNoteBookId = selected.getNotebookId(); - Log.i(TAG, "select=" + mNoteBookId); - mNotebookTv.setText(selected.getTitle()); - dialog.dismiss(); - } - }) - .setCancelable(true) - .show(); + }); } public interface SettingFragmentListener { diff --git a/app/src/main/java/org/houxg/leamonax/utils/DialogUtils.java b/app/src/main/java/org/houxg/leamonax/utils/DialogUtils.java index 88482d4..4eda8be 100644 --- a/app/src/main/java/org/houxg/leamonax/utils/DialogUtils.java +++ b/app/src/main/java/org/houxg/leamonax/utils/DialogUtils.java @@ -5,11 +5,15 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.support.annotation.NonNull; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import org.houxg.leamonax.R; +import org.houxg.leamonax.adapter.NotebookAdapter; +import org.houxg.leamonax.model.Notebook; public class DialogUtils { @@ -39,8 +43,48 @@ public class DialogUtils { .show(); } + public static void selectNotebook(Context context, String title, final SelectNotebookListener listener) { + View view = LayoutInflater.from(context).inflate(R.layout.dialog_notebook, null); + final RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.rv_notebook); + final NotebookAdapter adapter = + new NotebookAdapter() + .setCanOpenEmpty(false) + .setHasAddButton(false); + recyclerView.setLayoutManager(new LinearLayoutManager(context)); + recyclerView.setAdapter(adapter); + adapter.refresh(); + final AlertDialog dialog = new AlertDialog.Builder(context) + .setTitle(title) + .setView(view) + .setCancelable(true) + .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }) + .create(); + adapter.setListener(new NotebookAdapter.NotebookAdapterListener() { + @Override + public void onClickedNotebook(Notebook notebook) { + listener.onNotebookSelected(notebook); + dialog.dismiss(); + } + + @Override + public void onClickedAddNotebook(String parentNotebookId) { + + } + }); + dialog.show(); + + } public interface ChangedListener { void onChanged(String title, String link); } + + public interface SelectNotebookListener { + void onNotebookSelected(Notebook notebook); + } } diff --git a/app/src/main/res/layout/dialog_notebook.xml b/app/src/main/res/layout/dialog_notebook.xml new file mode 100644 index 0000000..b7c970e --- /dev/null +++ b/app/src/main/res/layout/dialog_notebook.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file