2015-11-11 2 views
3

Я реализующее нечто вроде категории, поэтому продукт может быть в 1 или более категорияхандроид получить выбранные флажков в группе

теперь я установил метку для CheckBox как

<CheckBox 
       android:id="@+id/c1" 
       android:tag="checkbox1" 
       android:text="Title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

и идти на

, когда пользователь нажимает кнопку, чтобы сохранить я проверить, если каждый флажок установлен, чем добавить тег в ArrayList и преобразовать его в строку separed запятой и сохранить

когда мне нужно получить список и установить выбранный флажок, я получаю String из db, разбивается на String [], затем перебираю его, нахожу элемент в android с помощью getResource, а затем устанавливаю его на select = true.

Я вижу, что, как огромная работа, я видел когда-то (не помню) какую-то группу флажка, вы просто используете groupOfCheckBox.getSelected();

если вы выбрали номер один и номер 2 это возвращение 1,2 ..

и установить его на проверку было легко, как groupofCheckBox.setSelect («1,2»)

, но я не могу найти это больше, кто-то знает, если я мечтал об этом или действительно существует какой-то способ сделать это

+2

вы думали о создании ListView вместо этого, он может помочь не повторять код для случаев, когда у вас есть много флажков - http://samir-mangroliya.blogspot.com.cy/2012/09/android-multiple-select-listview.html – Tasos

+0

да, возможно, не нравится пример, который вы предоставили, я посмотрю, спасибо =) – user2582318

+1

это похоже на то, как идти, взглянуть вокруг на github, возможно, библиотечный помощник, чтобы сделать вещи еще проще для многих чекбоксов – Tasos

ответ

2

Я сделал настраиваемое представление с именем CheckBoxGroupView:

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.CheckBox; 
import android.widget.GridLayout; 
import android.widget.GridView; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import java.util.Objects; 


public class CheckBoxGroupView extends GridLayout { 

    List<CheckBox> checkboxes = new ArrayList<>(); 

    public CheckBoxGroupView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public void put(CheckBox checkBox) { 
     checkboxes.add(checkBox); 
     invalidate(); 
     requestLayout(); 
    } 

    public void remove(Integer id) { 
     // TODO: Remove items from ArrayList 
    } 

    public List<?> getCheckboxesChecked(){ 

     List<CheckBox> checkeds = new ArrayList<>(); 
     for (CheckBox c : checkboxes){ 
      if(c.isChecked()) 
       checkeds.add(c); 
     } 

     return checkeds; 
    } 

    public List<Object> getCheckedIds(){ 

     List<Object> checkeds = new ArrayList<>(); 
     for (CheckBox c : checkboxes){ 
      if(c.isChecked()) 
       checkeds.add(c.getTag()); 
     } 
     return checkeds; 
    } 

    @Override 
    protected void onAttachedToWindow() { 
     super.onAttachedToWindow(); 

     for(CheckBox c: checkboxes) { 
      addView(c); 
     } 

     invalidate(); 
     requestLayout(); 
    } 

    @Override 
    protected void onFinishInflate() { 
     super.onFinishInflate(); 
    } 
} 

Это пример е или макет, который использует CheckBoxGroupView:

<com.example.views.CheckBoxGroupView 
    android:id="@+id/cbGroup" 
    android:columnCount="2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

</com.example.views.CheckBoxGroupView> 

Установка и получение Идентификаторы:

CheckBoxGroupView cbGroup = (CheckBoxGroupView) findViewById(R.id.cbGroup); 
Checkbox cb = new CheckBox(this); 
cb.setTag(1); 
cb.setText("Banana"); 
cbGroup.put(cb); 
cbGroup.getCheckedIds().toString(); 
+0

Он все еще не решает проблему. – nauman

Смежные вопросы