Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ protected void onCreate(Bundle savedInstanceState) {
.positiveText("Done")
.negativeText("Cancel")
.setMinSelectionLimit(0)
.enableSelectAllItem("Select All", true)
.setMaxSelectionLimit(listOfCountries.size())
.preSelectIDsList(alreadySelectedCountries) //List of ids that you need to be selected
.multiSelectList(listOfCountries) // the multi select model list with ids and name
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatDialogFragment;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.SearchView;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

Expand Down Expand Up @@ -41,6 +44,9 @@ public class MultiSelectDialog extends AppCompatDialogFragment implements Search
private int maxSelectionLimit = 0;
private String maxSelectionMessage = null;

private String selectAllItemText = null;
private boolean select_selectAllItemOnCreate = false;

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Expand Down Expand Up @@ -69,15 +75,48 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {

settingValues();

if(this.select_selectAllItemOnCreate) {
previouslySelectedIdsList.clear();

for(int i = 0; i < mainListOfAdapter.size(); i++) {
previouslySelectedIdsList.add(mainListOfAdapter.get(i).getId());
}
}

final AppCompatCheckBox selectAllCheckBox = (AppCompatCheckBox) dialog.findViewById(R.id.select_all_checkbox);
LinearLayout selectAllContainer = (LinearLayout) dialog.findViewById(R.id.select_all_container);

mainListOfAdapter = setCheckedIDS(mainListOfAdapter, previouslySelectedIdsList);
mutliSelectAdapter = new MutliSelectAdapter(mainListOfAdapter, getContext());

mutliSelectAdapter = new MutliSelectAdapter(mainListOfAdapter, getContext(), selectAllCheckBox);
mrecyclerView.setAdapter(mutliSelectAdapter);

if(this.selectAllItemText != null) {
dialog.findViewById(R.id.select_all_container).setVisibility(View.VISIBLE);
((TextView)dialog.findViewById(R.id.select_all_text)).setText(this.selectAllItemText);

selectAllContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectAllCheckBox.setChecked(!selectAllCheckBox.isChecked());
}
});
selectAllCheckBox.setClickable(true);
selectAllCheckBox.setChecked(this.select_selectAllItemOnCreate);
selectAllCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean selected) {
if(selected) {
mutliSelectAdapter.selectAll();
}
}
});
}

searchView.setOnQueryTextListener(this);
searchView.onActionViewExpanded();
searchView.clearFocus();


return dialog;
}

Expand Down Expand Up @@ -135,6 +174,17 @@ public MultiSelectDialog setMinSelectionMessage(String message) {
return this;
}

public MultiSelectDialog enableSelectAllItem(String itemText, boolean selectOnCreate) {
if(itemText == null || itemText.length() == 0) {
throw new IllegalArgumentException("Argument itemText cannot be null or empty");
}

this.selectAllItemText = itemText;
this.select_selectAllItemOnCreate = selectOnCreate;

return this;
}

public MultiSelectDialog onSubmit(@NonNull SubmitCallbackListener callback) {
this.submitCallbackListener = callback;
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ class MutliSelectAdapter extends RecyclerView.Adapter<MutliSelectAdapter.MultiSe
private ArrayList<MultiSelectModel> mDataSet = new ArrayList<>();
private String mSearchQuery = "";
private Context mContext;
private AppCompatCheckBox mSelectAllCheckBox;

MutliSelectAdapter(ArrayList<MultiSelectModel> dataSet, Context context) {
MutliSelectAdapter(ArrayList<MultiSelectModel> dataSet, Context context, AppCompatCheckBox selectAllCheckBox) {
this.mDataSet = dataSet;
this.mContext = context;
this.mSelectAllCheckBox = selectAllCheckBox;
}

@Override
Expand All @@ -39,23 +41,22 @@ public void onBindViewHolder(final MultiSelectDialogViewHolder holder, int posit

if (!mSearchQuery.equals("") && mSearchQuery.length() > 1) {
setHighlightedText(position, holder.dialog_name_item);
} else {
}
else {
holder.dialog_name_item.setText(mDataSet.get(position).getName());
}

if (mDataSet.get(position).getSelected()) {

if (!MultiSelectDialog.selectedIdsForCallback.contains(mDataSet.get(position).getId())) {
MultiSelectDialog.selectedIdsForCallback.add(mDataSet.get(position).getId());
}
}

if (checkForSelection(mDataSet.get(position).getId())) {
holder.dialog_item_checkbox.setChecked(true);
} else {
holder.dialog_item_checkbox.setChecked(false);
else if(mSelectAllCheckBox != null) {
mSelectAllCheckBox.setChecked(false);
}

holder.dialog_item_checkbox.setChecked(checkForSelection(mDataSet.get(position).getId()));

/*holder.dialog_item_checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Expand Down Expand Up @@ -117,6 +118,13 @@ private boolean checkForSelection(Integer id) {
return false;
}

public void selectAll() {
for(int i = 0; i < mDataSet.size(); i++) {
mDataSet.get(i).setSelected(true);
}

this.notifyDataSetChanged();
}

/*//get selected name string seperated by coma
public String getDataString() {
Expand Down
3 changes: 2 additions & 1 deletion library/src/main/res/layout/custom_multi_select.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
android:iconifiedByDefault="true"
android:queryHint="Search" />

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/select_all_container"
android:visibility="gone"
android:layout_width="match_parent"
Expand Down