2012-07-06 5 views
0

나는 android.i의 새로운 기능으로 간단한 수학 어플리케이션을 만든다. 내가 선택 올바른 선택이 아닌 문제에 대한 체크 상자를 사용하여 대답 옵션은 다 내가 체크 박스를체크 박스를 처리하는 방법 안드로이드의 체크되지 않은 이벤트와 체크되지 않은 이벤트

chkOption.setOnCheckedChangeListener(this); 

이벤트를 사용하므로 선택하고 그럼 ... 처리하려고하지 하나뿐만 아니라, 둘, 셋 수단 여기에있다 하나의 Arraylist에 선택 값을 저장하십시오. 그러나 옵션을 선택하면 arrayList에 값이 추가됩니다.하지만 (Diselect)를 선택 취소하면 이벤트가 발생하고 값이 arraylist에 추가됩니다. 내 코드

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     CheckBox chk=(CheckBox) buttonView; 
     if(chk.isChecked()) 
     { 
      forMetchCheckBox.add(String.valueOf(chk.getText()));    
     } 
    } 

forMetchCheckbow 아래에 내가 무엇을 할 수 있습니다 내 문자열의 ArrayList 낭포는? 이 문제를 해결하는 방법. 사용자가 옵션을 선택 취소하면 선택란 값이 ArrayList에서 제거됩니다. 가능한가?

+0

얼마나 많은 체크 박스 체크 박스 사용자 정의 목록보기에서 선택되고 선택되지 않은 체크 박스를 계산하려면 있니? –

답변

6

. 따라서이 경우 특정 체크 박스의 이벤트도 식별해야합니다.

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     int id = buttonView.getId(); 
     if(id == R.id.chk) 
     { 
      if(chk.isChecked()){ 
       forMetchCheckBox.add(String.valueOf(chk.getText())); 
      } 
      else{ 
       forMetchCheckBox.remove(String.valueOf(chk.getText())); 
      } 
     } 
     else if(id == R.id.chk1){ 
      .... 
     } 
    } 

등으로 청취자가 완벽하게 작동합니다.

+0

예이 코드를 사용하지만 내 문제는 선택 확인란을 선택 취소 한 후 arraylist에서 항목을 추가하는 방법입니다 (선택 취소) –

+0

내 대답을 편집했습니다. –

0

if 조건이 잘못되었습니다. 그것은해야한다 : 그것은 당신이 하나 개 이상의 체크 박스가있는 당신은 모든 체크 박스 글로벌 리스너를 설정하는 것

if(isChecked) 

하지

if(chk.isChecked()) 
+0

내 대답을 편집합니다 .isChecked는 함수 매개 변수입니다. 나는 실수를했다. –

+0

그러나 검사 항목을 선택 취소 (선택 취소) 한 후에 항목 추가를 제거하는 방법. –

1
chk.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // TODO Auto-generated method stub 

         if(isChecked){ 
          chetimeslot = (String)chk.getTag(); 
          checkbox_timeslot.add(chetimeslot); 

         } 
         else{ 
          chetimeslot = (String)chk.getTag(); 
          checkbox_timeslot.remove(chetimeslot); 


         } 

}); 
1

한 번에 최대 5 확인란을 선택하거나

 package com.test; 

import java.util.ArrayList; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 


public class ListViewCheckboxesActivity extends ListActivity { 

    AlertDialog alertdialog = null; 
    int i1, i2, i3 = 0; 
    Country rowcheck; 
    MyCustomAdapter dataAdapter = null; 
    ListView listView = null; 
    int k = 1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fmain); 

     // Generate list View from ArrayList 
     displayListView(); 
     checkButtonClick(); 

    } 

    private void displayListView() { 

     // Array list of countries Equipments 
     ArrayList<Country> rowcheckList = new ArrayList<Country>(); 
     Country rowcheck = new Country("", "Hex Bolts", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Hex Cap Screw", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Round Head Bolt", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Slotted Head Hex Bolt", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Socket Cap Screw", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Sockets", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Square Head Bolt", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Carriage Bolt", false); 
     rowcheckList.add(rowcheck); 
     rowcheck = new Country("", "Plow Bolt", false); 
     rowcheckList.add(rowcheck); 

     rowcheck = new Country("", "Struts Clamp", false); 
     rowcheckList.add(rowcheck); 

     listView = getListView(); 

     dataAdapter = new MyCustomAdapter(this, R.layout.rowcheck_info, 
       rowcheckList); 

     // Assign adapter to ListView 
     listView.setAdapter(dataAdapter); 

     listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView parent, View view, 
        int position, long id) { 
       // When clicked, show a toast with the TextView text 
       Country rowcheck = (Country) parent.getItemAtPosition(position); 

      } 

     }); 

    } 

    private class MyCustomAdapter extends ArrayAdapter<Country> { 
     private ArrayList<Country> rowcheckList; 

     public MyCustomAdapter(Context context, int textViewResourceId, 
       ArrayList<Country> rowcheckList) { 
      super(context, textViewResourceId, rowcheckList); 
      this.rowcheckList = new ArrayList<Country>(); 
      this.rowcheckList.addAll(rowcheckList); 
     } 

     private class ViewHolder { 
      TextView code; 
      CheckBox name; 
     } 

     @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder = null; 
    Log.v("ConvertView", String.valueOf(position)); 

    if (convertView == null) 
    { 
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    convertView = vi.inflate(R.layout.rowcheck_info, null); 

    holder = new ViewHolder(); 
    holder.code = (TextView) convertView.findViewById(R.id.code); 
    holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1); 
    convertView.setTag(holder); 

    holder.name.setOnClickListener(new View.OnClickListener() 
    { 
    public void onClick(View v) 
    { 
     CheckBox cb = (CheckBox) v ; 
     Country rowcheck = (Country) cb.getTag(); 

     //To check maximum 5 Selection 
     if(k>5) 
     { 

      if(!cb.isChecked()) 
      { 


        rowcheck.selected=true; 
        System.out.println(k--); 


      } 

      else 
      { 
       System.out.println("if block in-----"); 
       cb.setChecked(false); 
       Toast.makeText(getApplicationContext(), "Maximum Selection", Toast.LENGTH_LONG).show(); 
      } 


     } 

     else 
     { 

      System.out.println("else block in-----"); 

      if(!cb.isChecked()) 
      { 


        rowcheck.selected=true; 
        System.out.println(k--); 

      } 


      else if(cb.isChecked()) 
      { 


        rowcheck.selected=false; 
        System.out.println(k++); 



      } 

     } 





    Toast.makeText(getApplicationContext(), 
     "Clicked on Checkbox: " + cb.getText() + 
     " is " + cb.isChecked(), 
     Toast.LENGTH_LONG).show() 
     rowcheck.setSelected(cb.isChecked()); 
    } 
    }); 
    } 
    else 
    { 
    holder = (ViewHolder) convertView.getTag(); 
    } 

    Country rowcheck = rowcheckList.get(position); 
    // holder.code.setText(" (" + rowcheck.getCode() + ")"); 
    holder.code.setText(rowcheck.getName()); 
    // holder.name.setText(rowcheck.getName()); 
    holder.name.setChecked(rowcheck.isSelected()); 
    holder.name.setTag(rowcheck); 

    return convertView; 

    } 
    } 

    private void checkButtonClick() { 

     Button myButton = (Button) findViewById(R.id.findSelected); 
     myButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       StringBuffer responseText = new StringBuffer(); 
       responseText.append("The following were selected...\n"); 

       ArrayList<Country> rowcheckList = dataAdapter.rowcheckList; 

       System.out.println("Size" + rowcheckList.size()); 
       int j = 0; 
       ArrayList<String> stt = new ArrayList<String>(); 
       for (int i = 0; i < rowcheckList.size(); i++) { 
        Country rowcheck = rowcheckList.get(i); 
        // System.out.println(rowcheck.getName()); 

        if (rowcheck.isSelected()) { 
         stt.add(rowcheck.getName()); 
         // Country.st=new ArrayList<String>(); 
         String s = rowcheck.getName(); 
         System.out.println("String--" + rowcheck.getName()); 
         Country.st.add(s); 
         j = j++; 
         System.out.println(j++); 

         responseText.append("\n" + rowcheck.getName()); 

        } 

       } 
       for (int i = 0; i < stt.size(); i++) { 
        System.out.println("Names----" + stt.get(i).toString()); 
       } 

       if (j >= 1 && j <= 5) { 

        Intent i = new Intent(ListViewCheckboxesActivity.this, 
          PickedItemListView.class); 
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(i); 
       } else { 
        Toast.makeText(ListViewCheckboxesActivity.this, 
          "Maximum 5 Selection Allowed", Toast.LENGTH_LONG) 
          .show(); 
       } 

       Toast.makeText(ListViewCheckboxesActivity.this, responseText, 
         Toast.LENGTH_LONG).show(); 

      } 
     }); 

    } 
//Logout ALert Box 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 

      LayoutInflater inflater = LayoutInflater 
        .from(ListViewCheckboxesActivity.this); 
      View dialogview = inflater.inflate(R.layout.logout_popup, null); 
      final Button ok = (Button) dialogview.findViewById(R.id.ok); 
      final Button cancel = (Button) dialogview.findViewById(R.id.cancel); 
      AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(
        (ListViewCheckboxesActivity.this)); 
      dialogbuilder.setView(dialogview); 
      dialogbuilder.setInverseBackgroundForced(true); 
      alertdialog = dialogbuilder.create(); 
      alertdialog.show(); 

      ok.setOnClickListener(new OnClickListener() { 

       public void onClick(View paramView) { 
        alertdialog.dismiss(); 
        final Intent intent = new Intent(
          ListViewCheckboxesActivity.this, 
          LoginActivity.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(intent); 
        finish(); 
       } 

      }); 

      cancel.setOnClickListener(new OnClickListener() { 

       public void onClick(View paramView) { 
        alertdialog.cancel(); 
       } 
      }); 

     } 
     return super.onKeyDown(keyCode, event); 
    } 

} 
0
checkBox_sound.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 

      varBoolSoundOn = (isChecked) ? true : false; 

     } 
    }); 

그것은 완벽하게 작동합니다 ...

관련 문제