lundi 19 juin 2017

How do i select all checkboxes in listview using android studio?

I am developing an app with check box and i want to select all checkboxes in listview with one checkbox and also if user want to select any check box (i.e to select all check box or any of the check box select in list)both operations i want to do.How do i do this?

Following is my code,suggest me!!

//ListActivity

public class ListActivity extends AppCompatActivity {

ListView mListView;
Point p;
TextView txt;
ImageView img;
CheckBox chkboxAll;

private int[] startImages = new int[]{
        R.drawable.areaname,R.drawable.email,R.drawable.user};

private String[] mColorNames = new String[]{
        "1", "2", "3"};

private List<ListModel> listModelList = new ArrayList<>();
private String TAG = "Lokesh";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_activity1);
    mListView = (ListView) findViewById(R.id.listview);
    chkboxAll = (CheckBox) findViewById(R.id.checkBox);

    loadListWithImages();
    final ListAdapterN adapter = new ListAdapterN(listModelList,this);
    mListView.setAdapter(adapter);
    Log.d(TAG, "onCreate: list"+listModelList.size());
}


private void loadListWithImages() {
    for (int i = 0; i < startImages.length; i++) {
        ListModel listModel = new ListModel();
        listModel.setCount(0);
        listModel.setImage(startImages[i]);
        listModel.setName(mColorNames[i]);
        listModelList.add(listModel);
    }
}

}

//Adapter

public class ListAdapterN extends BaseAdapter implements android.widget.ListAdapter {

TextView txt;
ImageView img;

private PopupWindow window;

private List<ListModel> listModelList;
private Context mContext;
private LayoutInflater inflater;
private String TAG = "LokeshSA";
private String[] mColorNames = new String[]{
        "1", "2", "3"};
private String[] listitems = new String[]{"One", "Two", "Three"};

public ListAdapterN(List<ListModel> listModelList, Context mContext) {
    this.listModelList = listModelList;
    this.mContext = mContext;
    inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    return listModelList.size();

}

@Override
public Object getItem(int position) {
    return listModelList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    //  ViewHolder holder = null;
    final ViewHolder holder;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.single_list_items, null);
        holder = new ViewHolder();

        //checkbox

        /*
        holder.checkbox = (CheckBox) convertView.findViewById(R.id.listview_cb);
        holder.checkbox.setChecked(listModelList.get(position).isChecked());
        holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                ListModel listModel = listModelList.get(position);
                listModel.setChecked(isChecked);
                listModelList.remove(position);
                listModelList.add(position,listModel);
            }
        });
        convertView.setTag(holder);    //       */

        holder.checkbox = (CheckBox) convertView.findViewById(R.id.listview_cb);
        holder.checkbox
                .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(CompoundButton buttonView,
                                                 boolean isChecked) {
                        ListModel element = (ListModel) holder.checkbox
                                .getTag();
                        element.setSelected(buttonView.isChecked());

                    }
                });  // working



        convertView.setTag(holder);
        holder.checkbox.setTag(listModelList.get(position));

        //spinner

        holder.spinner = (Spinner) convertView.findViewById(R.id.listview_spinner);

        ArrayAdapter<String> startColorsAdapter = new ArrayAdapter<String>(mContext,
                android.R.layout.simple_list_item_1, mColorNames);
        holder.spinner.setAdapter(startColorsAdapter);
        holder.spinner.setSelection(listModelList.get(position).getCount());


        holder.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position2, long id) {
                ListModel starModel = listModelList.get(position);
                starModel.setCount(position2);
                listModelList.remove(position);
                listModelList.add(position, starModel);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

        convertView.setTag(holder);


    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    // initialize image resource
    holder.iamge = (ImageView) convertView.findViewById(R.id.listview_imgs);
    // setting image
    holder.iamge.setImageResource(listModelList.get(position).getImage());
    //textview resource
    holder.textView = (TextView) convertView.findViewById(R.id.listview_tv);
    holder.textView.setText(listitems[position]);
    // holder.textView.setText(listModelList.get(position).getName());

    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

           // ShowPopupWindow();

        }

    });

    return convertView;
}

private class ViewHolder {
    private Spinner spinner;
    private ImageView iamge;
    private TextView textView;
    private CheckBox checkbox;
}


@Override
public int getViewTypeCount() {

    return getCount();
}

@Override
public int getItemViewType(int position) {

    return position;
}

}




Aucun commentaire:

Enregistrer un commentaire