Как получить идентификаторы выбранных флажков, которые отображаются динамически в Android?

1

В моем проекте я показываю флажки динамически. Но я хочу получить значения id всех выбранных флажков. В моем приложении пользователь будет выбирать несколько флажков, и мне нужно сохранить эти выбранные флажки в id araralist. Как я могу получить выбранные флажки?

Мой код:

 public View getView(int position, View convertView, ViewGroup parent) 
{
  View view = convertView;
  try
  {
  if (view == null) 
   {
    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.list_item1, null); 
    }
    final UserBO listItem = mList.get(position);            
    if (listItem != null) 
      {

    Rl = (LinearLayout)findViewById(R.id.chklnlayout);

    ArrayList<UserBO> mList1;

    CheckBox[] cbs = new CheckBox[20]; 

    for(int k=0; k<list.size(); k++)
    { 
     System.out.println("list in for loop"+list.get(0));
     arr = list.get(k);
     cbs[k] = new CheckBox(getContext());
     Rl.addView(cbs[k]);
     cbs[k].setText((CharSequence) arr.get(2));
     cbs[k].setTextColor(Color.parseColor("#000000"));  
    } 

   }
}
catch(Exception e){
  String err = (e.getMessage()==null)?"hii":e.getMessage();
  Log.e("sdcard-err2:",err);  
}
return view;
}

Пожалуйста, помогите мне в этом.... Спасибо в Advance

Теги:

4 ответа

2
Лучший ответ

В коде для цикла,

Напишите эту строку,

cbs[k].setId(k);

Теперь implements OnClickListener в вашей деятельности

в

@Override
public void onClick(View v)
{
int checkBoxId  = v.getId();    
}

или что-то вроде,

@Override
    public void onClick(View v)
    {
        // Perform action on clicks, depending on whether it now checked
        if (((CheckBox) v).isChecked()) {
            Toast.makeText(Activity.this, "Selected CheckBox ID" + v.getId(), Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(Activity.this, "Not selected", Toast.LENGTH_SHORT).show();
        }
}

И дайте мне знать, что произойдет.

  • 0
    Привет, спасибо за ответ .... как я могу поставить галочку на прослушивателе кликов?
  • 0
    просто реализует OnClickListener в вашей деятельности.
Показать ещё 5 комментариев
0

Эту проблему можно решить, применив флажок "setOnClickListener" в дочернем флажке родительского динамического созданного линейного макета. Я добавил флажок, используя "getLayoutInflater()" и установил идентификатор для каждого флажка. Для него вы можете увидеть код ниже.

for (int i = 0; i < JAS.length(); i++) {

   View child = getLayoutInflater().inflate(R.layout.return_child, null);
   chk = (CheckBox) child.findViewById(R.id.Product);
   chk.setText(c.optString("name"));
   chk.setId(i);

   ll.addView(child);

   chk.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {
           String chk = null;
           chk = Integer.toString(v.getId());
           if (((CheckBox) v).isChecked()) {
               selchkboxlist.add(chk);

           } else {
               selchkboxlist.remove(chk);
           }
       }
   });
}

Здесь selchkboxlist - это "Список", как показано ниже:

Список selchkboxlist = new ArrayList();

Теперь нажатие кнопки "Вкл." Вы можете применить нижеприведенный код для доступа к идентификатору выбранного флажка.

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

        for (int p=0;p<selchkboxlist.size();p++){
            String Length = selchkboxlist.get(p);
            int ln = Integer.parseInt(Length);
            Toast.makeText(ReturnOrders.this, ""+ln, Toast.LENGTH_LONG).show();
        }

    }
});
0

U Can Implement Как это сделать.

  checkBox.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
                System.out.println("checkBox.isChecked()"
                        + checkBox.isChecked());
                if (checkBox.isChecked() == true) {
                    PhoneListCheckbox.phonelist.get(position).setChecked(
                            true);
                } else {
                    PhoneListCheckbox.phonelist.get(position).setChecked(
                            false);
                }
            }
        });
0

Вы можете попробовать это (я его не тестировал):

final HashMap<Integer,Integer> myList=new HashMap<Integer, Integer>();      
for(int i=1;i<=20;i++)
{
   final CheckBox cb=new CheckBox(context);
   cb.setId(i);
   myList.put(i, 0);
   final int pos=i;
   cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {

         if(cb.isChecked())
        myList.put(pos, 1);// checkbox checked
         else
        myList.put(pos,0);//checkbox unchecked                  
    }
   });
}

И вы можете получить доступ к статусу int status=myList.get(checkbox_id); просто int status=myList.get(checkbox_id); всякий раз, когда вам нужно. Здесь указано 1, а 0 - флажки без флажков.

  • 0
    используя ваш код, я думаю, что 20 новых анонимных классов созданы из нового OnCheckedChangeListener (), также требуется дополнительная коллекция HashMap для хранения идентификатора отмеченного флажка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню