如何使复选框始终检查并在android中检索它们的值

时间:2014-04-09 05:03:29

标签: android checkbox

我创建了一个应用程序,其中我正在阅读一些文件数据,n代表listviewcheckbox代表CustomAdapter。它工作正常,但我希望所有的checkbox在已检查状态下可见,用户可以取消选中checkbox if想要和在背压时获取已检查数据。 的 AdapterClass

@Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {
            // TODO Auto-generated method stub
            View vi = convertView;
            if (convertView == null)
                vi = mInflater.inflate(R.layout.row, null);
            tv = (TextView) vi.findViewById(R.id.textView1);
            // tv1 = (TextView) vi.findViewById(R.id.textView2);
            cb = (CheckBox) vi.findViewById(R.id.checkBox1);
            tv.setText(list1.get(position));
            // tv1.setText(phno1.get(position));
            cb.setTag(position);

            cb.setChecked(mCheckStates.get(position, true));
            cb.setOnCheckedChangeListener(this);

            return vi;

        }

        public boolean isChecked(int position) {

            return mCheckStates.get(position, false);
        }

        public void setChecked(int position, boolean isChecked) {
            mCheckStates.put(position, isChecked);
              notifyDataSetChanged();
        }

        public void toggle(int position) {
            setChecked(position, !isChecked(position));
        }

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            // TODO Auto-generated method stub
            mCheckStates.put((Integer) buttonView.getTag(), isChecked);

        }
    }

OnBackPress

StringBuilder checkedcontacts = new StringBuilder();
            System.out.println(".............." + ma.mCheckStates.size());
            for (int j = 0; j < list1.size(); j++)

            {
                if (ma.mCheckStates.get(j) == true) {
                    StringTokenizer st1 = new StringTokenizer(list1.get(j)
                            .toString(), "\n");
                    String first = st1.nextToken();
                    String second = st1.nextToken();
                    phno0.add(second.toString());
                    checkedcontacts.append(list1.get(j).toString());
                    checkedcontacts.append("\n");

                } else {
                    System.out.println("..Not Checked......"
                            + list1.get(j).toString());
                }

            }

            Intent returnIntent = new Intent();
            returnIntent.putStringArrayListExtra("extermal_name", phno0);
            setResult(RESULT_OK, returnIntent);

            finish();
            break;

        }
        return super.onOptionsItemSelected(item);


 }

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="15dp"
        android:ems="20"
        android:text="TextView"
        android:textColor="#0082e6" />



    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
          android:checked="true"
        android:layout_marginBottom="5dp"
        android:layout_marginRight="22dp"
        android:layout_marginTop="5dp" />

</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

只需在行格式文件的下方放置复选框:

android:checked="true"

然后回顾它的价值,只需使用;

checkbox.gettext();返回字符串值。

并且对于反复它是否被检查:

checkbox.isChecked();返回布尔值。

答案 1 :(得分:0)

试试这个并根据你的要求实现这个逻辑。

int cntChoice = myList.getCount();

String checked = "";

String unchecked = "";
SparseBooleanArray sparseBooleanArray = myList.getCheckedItemPositions();

for(int i = 0; i < cntChoice; i++)
{

     if(sparseBooleanArray.get(i) == true) 
     {
         checked += myList.getItemAtPosition(i).toString() + "\n";
     }
     else  if(sparseBooleanArray.get(i) == false) 
     {
         unchecked+= myList.getItemAtPosition(i).toString() + "\n";
     }

 }

答案 2 :(得分:0)

据我所知,我建议在SharedPreferences中存储,但你也可以使用数据库表。