android动态添加复选框 [英] android add checkbox dynamically

查看:39
本文介绍了android动态添加复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我的布局 xml.现在,布局 (listitem.xml) 中的复选框数量有限(七个).我们将它添加到线性布局中.

The following are my layout xmls. Now we are have a limited number (seven) of check boxes in the layout (listitem.xml). And we are adding it in a linear layout.

main.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" 
    android:background="#FFFFFF"
   >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="21dp"
        android:layout_marginTop="38dp" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/linearLayout1"
            android:layout_alignLeft="@+id/linearLayout1"
            android:text="TESTER : "
            android:textColor="#000000" />

        <AutoCompleteTextView
            android:id="@+id/tester_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:capitalize="characters" 
            android:textColor="#000000">

            <requestFocus />
        </AutoCompleteTextView>

    </LinearLayout>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="19dp"
        android:text="APPS TO TEST : "
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:textColor="#000000"/>




    <View
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="1dp"
        android:layout_below="@+id/textView2"
        android:background="#CCCCCC" 
        android:layout_marginBottom="5dp"/>

    <ListView
        android:id="@+id/apps_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/view1" 
        android:dividerHeight="5dp">
    </ListView>

    <Button
        android:id="@+id/refreshBtn"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignBottom="@+id/textView2"
        android:layout_alignParentLeft="true"
        android:text="Refresh" />

</RelativeLayout>

列表项.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/app_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="70"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#000000" />

        <Button
            android:id="@+id/launch_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:layout_weight="20"
            android:text="LAUNCH" />
    </LinearLayout>

    <RadioGroup
        android:id="@+id/status_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/pass_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="PASS"
            android:textColor="#000000" />

        <RadioButton
            android:id="@+id/fail_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="FAIL"
            android:textColor="#000000" />
    </RadioGroup>

    <LinearLayout
        android:id="@+id/failure_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:gravity="center"
            android:text="FAILURE REASONS"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#000000" />

        <LinearLayout
            android:id="@+id/failure_reasonslist"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:orientation="vertical" >

            <CheckBox
                android:id="@+id/failure_Sound"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#000000" />

            <CheckBox
                android:id="@+id/failure_GPS"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:textColor="#000000" />

            <CheckBox
                android:id="@+id/failure_Display"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:textColor="#000000" />

            <CheckBox
                android:id="@+id/failure_Network"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:textColor="#000000" />

            <CheckBox
                android:id="@+id/failure_Rotation"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:textColor="#000000" />

            <CheckBox
                android:id="@+id/failure_Microphone"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:textColor="#000000" />

            <CheckBox
                android:id="@+id/failure_Others"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:textColor="#000000" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lineatlayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="DESCRIPTION : "
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#000000" />

        <EditText
            android:id="@+id/description_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:clickable="true"
            android:ems="10"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:inputType="textMultiLine"
            android:textColor="#000000" >
        </EditText>
    </LinearLayout>
 <LinearLayout
        android:id="@+id/lineatlayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    <Button
        android:id="@+id/submit_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="  SUBMIT " />
    <Button
        android:id="@+id/uninstall_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="UNINSTALL" />
    </LinearLayout>

    <!-- </RelativeLayout> -->

</LinearLayout>

但根据新要求,我们需要动态添加复选框.就像需要从 API 调用中获取选项并将其转换为视图中的复选框.我花了很多时间在里面.有人可以建议一种方法来解决这个问题.

But as per the new requirement we need to add the check boxes dynamically. Like need to fetch the options from the API call and convert it as check boxes in the view. I spent lots of time in it. Can someone suggest a method to solve this.

我们的布局应该是这样的.在列表视图中,我们将显示员工详细信息,并且应从 API 调用或数据库中加载每条员工记录的资格.

Our layout should be like this. In a list view we are displaying employee details and for each employee record the qualification should be loaded from the API call or database.

      [Reviewer Name (Editable)]       
               Employee Lest           
---------------------------------------
Employee1                    [Click Me]

Male (0)          Female ( )
Salary : [5999 (editable)]
Qualification
[X]BA
[ ]BSc
[ ]Matriculation
[ ]Other
[Submit Button]
---------------------------------------
Employee2                    [Click Me]

Male (0)          Female ( )
Salary : [5999 (editable)]
Qualification
[X]BA
[ ]BSc
[ ]Matriculation
[ ]Other
[Submit Button]
---------------------------------------
Employee3                    [Click Me]

Male (0)          Female ( )
Salary : [5999 (editable)]
Qualification
[X]BA
[ ]BSc
[ ]Matriculation
[ ]Other
[Submit Button]
---------------------------------------

源代码

private class ListAdapters extends ArrayAdapter<ApplicationBean> {
    private ArrayList<ApplicationBean> items;
    private int position;

    public ListAdapters(Context context, int textViewResourceId,
            ArrayList<ApplicationBean> mTitleList) {
        super(context, textViewResourceId, mTitleList);
        this.items = mTitleList;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        this.position = position;
        if (v == null) {
            LayoutInflater inflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inflater.inflate(R.layout.applicationlistitem, null);
        }

        final ApplicationBean o = (ApplicationBean) items.get(position);

        if (o != null) {

            txtAppName = (TextView) v.findViewById(R.id.app_name);
            txtAppName.setText("" + o.getAppName());
            launchButton = (Button) v.findViewById(R.id.launch_btn);
            launchButton.setTag(position);
            launchButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    final PackageManager pm = mContext.getPackageManager();
                    Intent LaunchIntent = pm
                            .getLaunchIntentForPackage(items
                                    .get(Integer.parseInt(v.getTag()
                                            .toString())).getPname());
                    mContext.startActivity(LaunchIntent);

                }
            });
            final LinearLayout failure_reasonslist = (LinearLayout) v
                    .findViewById(R.id.failure_reasonslist);

            rdgPassFail = (RadioGroup) v.findViewById(R.id.status_group);
            rdgPassFail.setTag(position);

            RadioButton passBtn = (RadioButton) v
                    .findViewById(R.id.pass_btn);
            passBtn.setTag(position);
            RadioButton failbtn = (RadioButton) v
                    .findViewById(R.id.fail_btn);
            failbtn.setTag(position);

            rdgPassFail
                    .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                        @Override
                        public void onCheckedChanged(RadioGroup group,
                                int checkedId) {
                            ApplicationBean o = (ApplicationBean) items
                                    .get(Integer.parseInt(group.getTag()
                                            .toString()));

                            switch (checkedId) {
                            case R.id.fail_btn:
                                Log.e("Fail button", "Clicked");
                                o.setFailState(true);
                                o.setPassState(false);
                                numOptions = 0;
                                Log.e("Fail button--1", "Clicked");

                                break;
                            case R.id.pass_btn:
                                Log.e("Pass button", "Clicked");

                                o.setFailState(false);
                                o.setPassState(true);
                                Log.e("Pass button-----1", "Clicked");

                                break;
                            }
                            items.set(Integer.parseInt(group.getTag()
                                    .toString()), o);
                        }

                    });

            LinearLayout featuresTable = (LinearLayout) v.findViewById(R.id.failure_reasonslist);

            // use loop CheckBox feature1 = new CheckBox(this); 
            for(int i = 0; i<=5; i++) {
                CheckBox feature1 = new CheckBox(this.getContext());
                featuresTable.addView(feature1);
            }




            txtDescription = (EditText) v
                    .findViewById(R.id.description_text);
            txtDescription.setTag(position);
            if (txtDescription.isFocused()) {
                InputMethodManager inputManager = (InputMethodManager) mContext
                        .getSystemService(INPUT_METHOD_SERVICE);
                inputManager.restartInput(txtDescription);
            }

            txtDescription
                    .setOnFocusChangeListener(new View.OnFocusChangeListener() {

                        @Override
                        public void onFocusChange(View v, boolean hasFocus) {
                            if (!hasFocus) {

                                final EditText Caption = (EditText) v;
                                o.setDescription(Caption.getText()
                                        .toString());

                            }

                        }
                    });
            uninstallButton = (Button) v.findViewById(R.id.uninstall_btn);
            uninstallButton.setTag(position);
            // uninstallButton.setVisibility(View.INVISIBLE);
            o.setUninstallVisible(false);
            uninstallButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Uri packageUri = Uri.parse("package:"
                            + items.get(
                                    Integer.parseInt(v.getTag().toString()))
                                    .getPname());
                    Intent uninstallIntent = new Intent(
                            Intent.ACTION_DELETE, packageUri);
                    uninstallIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(uninstallIntent);
                    mTitleList.remove(items.get((Integer) v.getTag()));

                    mListView.setAdapter(new ListAdapters(mContext,
                            R.id.app_name, mTitleList));
                    ((BaseAdapter) mListView.getAdapter())
                            .notifyDataSetChanged();
                    isUninstallclicked = true;

                }
            });

            submitButton = (Button) v.findViewById(R.id.submit_btn);
            submitButton.setTag(txtDescription);
            submitButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    EditText tv = (EditText) v.getTag(); // get edittext
                                                            // object

                    txtDescription = tv;
                    if (txtTesterName.getText().toString().equals("")) {
                        showDialog("Please enter the name of tester",
                                mContext);
                    } else if (numOptions == 0) {
                        showDialog("Please select failure reason", mContext);
                    } else if (tv.getText().toString().equals("")) {
                        showDialog("Please enter the description", mContext);
                    } else if (!isNetworkAvailable()) {

                        showDialog(
                                "No network connection.Report won't be submitted",
                                mContext);
                    } else {

                        if (!o.isUninstallVisible()) {
                            uninstallButton.setVisibility(View.VISIBLE);
                            o.setUninstallVisible(true);
                            mListView.invalidate();
                        }
                        PostRequest p = new PostRequest(Integer.parseInt(tv
                                .getTag().toString()));
                        p.execute();

                    }
                }

            });

        }
        return v;
    }

推荐答案

LinearLayout featuresTable = (LinearLayout) findViewById(R.id.failure_reasonslist);
// use loop 
CheckBox feature1 = new CheckBox(this);
featuresTable.addView(feature1 );

这篇关于android动态添加复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆