Sunday, 10 September 2017

Multi-pal Check Box Select

Java Class
MainActivityFragment.java

public class MainActivityFragment extends Fragment {

    ArrayList<Number> numbers;
    private RecyclerView list;
    private Button btnGetSelected;

    public MainActivityFragment() {
    }

    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_main, container, false);
    }

    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        btnGetSelected = (Button) view.findViewById(R.id.btnGetSelected);
        list = (RecyclerView) view.findViewById(R.id.list);
        list.setLayoutManager(new LinearLayoutManager(getActivity()));
        list.setHasFixedSize(true);
    }

    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        numbers = new ArrayList<>();
        String Ones[] = {"12th","10th", "Graduction", "Post Graduction", "Diploma", "ITI", "BE", "B Tech", "M tech",
                "MCA", "MBA", "MCA", "BSC", "MSC", "BA", "MA", "B.COM", "M.COM"};
        for (int i = 0; i <= 17; i++) {
            Number number = new Number();
            number.setTextONEs(Ones[i]);
            this.numbers.add(number);
        }
        NumbersAdapter adapter = new NumbersAdapter(this.numbers);
        list.setAdapter(adapter);

        btnGetSelected.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                StringBuilder stringBuilder = new StringBuilder();
                for (Number number : numbers) {
                    if (number.isSelected()) {
                        if (stringBuilder.length() > 0)
                            stringBuilder.append(", ");
                        stringBuilder.append(number.getTextOnes());
                    }
                }
                Toast.makeText(getActivity(), stringBuilder.toString(), Toast.LENGTH_LONG).show();
            }
        });
    }
}



Bean Class

public class Number {
    private String textONEs;
    private boolean isSelected;

    public String getTextOnes() {
        return textONEs;
    }

    public void setTextONEs(String textONEs) {
        this.textONEs = textONEs;
    }


    public boolean isSelected() {
        return isSelected;
    }

    public void setSelected(boolean selected) {
        isSelected = selected;
    }
}

Adapter Class 
public class NumbersAdapter extends RecyclerView.Adapter<NumbersAdapter.ViewHolder> {

    ArrayList<Number> numbers;

    public NumbersAdapter(List<Number> numbers) {
        this.numbers = new ArrayList<>(numbers);
    }

    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.client_list_item, parent, false);
        return new ViewHolder(v);
    }

    @Override    public void onBindViewHolder(final ViewHolder holder, int position) {
        holder.bindData(numbers.get(position));

        holder.checkbox.setOnCheckedChangeListener(null);

        holder.checkbox.setChecked(numbers.get(position).isSelected());

        holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                numbers.get(holder.getAdapterPosition()).setSelected(isChecked);
            }
        });

// Check Box Select Method 
holder.parentLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { holder.checkbox.performClick(); } });
    }

    @Override    public int getItemCount() {
        return numbers.size();
    }


    public static class ViewHolder extends RecyclerView.ViewHolder {
        private TextView textName;
        private CheckBox checkbox;
        private LinearLayout lRootLayout,parentLayout;

        public ViewHolder(View v) {
            super(v);
            textName = (TextView) v.findViewById(R.id.textName);
            checkbox = (CheckBox) v.findViewById(R.id.checkbox);
            lRootLayout=(LinearLayout) v.findViewById(R.id.lRootLayout);
            parentLayout=(LinearLayout) v.findViewById(R.id.parentLayout);
        }

        public void bindData(Number number) {
            textName.setText(number.getTextOnes());
        }
    }
}


Main XML 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.guna.recyclerviewwithcheckbox.MainActivityFragment"    tools:showIn="@layout/activity_main">

    <android.support.v7.widget.RecyclerView        android:id="@+id/list"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="0.9"        android:scrollbars="vertical" />

    <Button        android:id="@+id/btnGetSelected"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="0.1"        android:text="GET SELECTED" />
</LinearLayout>



adb.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/lRootLayout"    android:layout_width="match_parent"    android:layout_marginBottom="5dp"    android:layout_height="wrap_content"    android:orientation="vertical">



            <LinearLayout                android:id="@+id/parentLayout"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:orientation="horizontal"                android:padding="5dp">

                <TextView                    android:id="@+id/textName"                    android:layout_width="0dp"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:textColor="@android:color/black" />
                <CheckBox                    android:id="@+id/checkbox"                    android:layout_width="0dp"                    android:layout_height="wrap_content"                    android:layout_weight=".2"                    />
        </LinearLayout>
</LinearLayout>

No comments:

Post a Comment