首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

seletctAll_利用ScrollView+RadioGroup+RadioButton兑现相似互斥

2012-11-06 
seletctAll___利用ScrollView+RadioGroup+RadioButton实现相似互斥假如你有多个匹配list,在这些匹配list中

seletctAll___利用ScrollView+RadioGroup+RadioButton实现相似互斥
假如你有多个匹配list,在这些匹配list中存在这样的一些匹配条目
a 匹配 b;
a 匹配 c;
a 匹配 d;

e 匹配 f
d 匹配 g;
加入你要实现实现select all,但有想实现相似条目互斥功能,
互斥的意思是:在上述条目中有关a的三个条目之间匹配条目只能存在一个,也就是
如果选择了
    a 匹配 b,
那么a 匹配 c;
    a 匹配 d;就自动把check状态值为false,
那么可以参照如下方式实现:
merge_item.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/item"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:orientation="horizontal"    android:padding="4dp">    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="left"        android:layout_alignParentLeft="true">        <RelativeLayout            android:id="@+id/avatarLayout_1"            android:layout_width="60dip"            android:layout_height="60dip"            android:background="@drawable/frame">            <ImageView                android:id="@+id/avatar_1"                android:layout_width="60dip"                android:layout_height="60dip"                android:layout_alignParentLeft="true"                android:src="@drawable/default_avatar" />            <ImageView                android:id="@+id/sns_type_icon_1"                android:layout_width="25dip"                android:layout_height="25dip"                android:paddingRight="5dip"                android:paddingLeft="3dip"                android:layout_alignBottom="@id/avatar_1"                android:layout_alignRight="@id/avatar_1"                 />        </RelativeLayout>        <TextView            android:layout_below="@+id/item"            android:layout_toRightOf="@+id/avatarLayout_1"            android:layout_centerVertical="true"            android:paddingLeft="1dip"            android:id="@+id/name_1"            android:layout_width="60dip"            android:layout_height="wrap_content"            android:textSize="18dip"            android:layout_weight="1"            android:textColor="#ffffff"            android:text="Contact1" />    </LinearLayout>          <RadioButton        android:id="@+id/link"        android:layout_centerHorizontal="true"        android:layout_centerInParent="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="right"        android:layout_alignParentRight="true">        <TextView            android:layout_below="@+id/item"            android:layout_centerVertical="true"            android:paddingRight="1dip"            android:id="@+id/name_2"            android:layout_width="60dp"            android:layout_height="wrap_content"            android:textSize="18dip"            android:layout_weight="1"            android:textColor="#ffffff"            android:text="Contact2" />        <RelativeLayout            android:id="@+id/avatarLayout_2"            android:layout_width="60dip"            android:layout_height="60dip"            android:background="@drawable/frame">            <ImageView                android:id="@+id/avatar_2"                android:layout_width="60dip"                android:layout_height="60dip"                android:layout_alignParentLeft="true"                android:src="@drawable/default_avatar" />            <ImageView                android:id="@+id/sns_type_icon_2"                android:layout_width="25dip"                android:layout_height="25dip"                android:paddingRight="5dip"                android:paddingLeft="3dip"                android:layout_alignBottom="@id/avatar_2"                android:layout_alignRight="@id/avatar_2"                />        </RelativeLayout>    </LinearLayout></RelativeLayout>


merge_group.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/group"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    ></LinearLayout>


merge_list.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical">      <ScrollView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginBottom="60dp">        <LinearLayout            android:id="@+id/merge_list"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:orientation = "vertical">        </LinearLayout>    </ScrollView>    <RelativeLayout        android:id="@+id/merge_bottom_bar"        android:layout_width="fill_parent"        android:layout_height="60dp"        android:background="@drawable/bar"        android:gravity="center_vertical"        android:orientation="horizontal"        android:layout_alignParentBottom="true">        <CheckBox            android:id="@+id/selectedAll"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="All"            android:textColorHighlight="#ff00ff00"            android:layout_marginLeft="10dp"            android:layout_alignParentLeft="true"            android:layout_alignLeft="@+id/merge_bottom_bar"            android:layout_alignParentBottom="true" />        <Button            android:id="@+id/btn_ok"            android:layout_width="100dp"            android:layout_height="wrap_content"            android:layout_marginRight="10dp"            android:layout_toLeftOf="@+id/btn_cancel"            android:text="Save"            android:layout_alignParentBottom="true" />        <Button            android:id="@+id/btn_cancel"            android:layout_width="100dp"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:layout_alignRight="@+id/merge_bottom_bar"            android:layout_marginRight="10dp"            android:text="Cancel"            android:layout_alignParentBottom="true" />    </RelativeLayout></RelativeLayout></LinearLayout>


List11.java
import aliusa.cn.R;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RadioButton;import android.widget.RelativeLayout;import android.widget.TextView;import android.widget.CompoundButton.OnCheckedChangeListener;import java.util.ArrayList;/** * This example shows how to use choice mode on a list. This list is  * in CHOICE_MODE_SINGLE mode, which means the items behave like * checkboxes. */public class List11 extends Activity {        /** The similar_group_list. */    private ArrayList<SimilarGroup> list_similarGroup = new ArrayList<SimilarGroup>();        /** The merge group list layout. */    private LinearLayout layoutSimilarGroupList;        /** The Constant CODE_MERGE_SUBMIT. */    public static final int CODE_MERGE_SUBMIT  = 1;        /**     * The Class SimilarItem.     */    public class SimilarItem {                /** The avatar_1. */        public ImageView avatar_1;                  /** The avatar_2. */        public ImageView avatar_2;                /** The name_1. */        public TextView name_1;                     /** The name_2. */        public TextView name_2;                  /** The sns type icon_1. */        public ImageView snsTypeIcon_1;                  /** The sns type icon_2. */        public ImageView snsTypeIcon_2;                 /** The check box. */        public RadioButton checkBox;                /** The at similar group list position. */        public int atSimilarGroupListPosition;                        /**         * Checks if is check.         *         * @return true, if is check         */        public boolean isCheck() {            return checkBox.isChecked();        }                /**         * Instantiates a new similar item.         *         * @param row the row         * @param contact1 the contact1         * @param contact2 the contact2         * @param context the context         */        public SimilarItem(RelativeLayout row,String name,Context context) {            this.avatar_1 = (ImageView) row.findViewById(R.id.avatar_1);               this.name_1 = (TextView) row.findViewById(R.id.name_1);              this.snsTypeIcon_1 = (ImageView) row.findViewById(R.id.sns_type_icon_1);            this.checkBox = (RadioButton) row.findViewById(R.id.link);            this.avatar_2 = (ImageView) row.findViewById(R.id.avatar_2);               this.name_2 = (TextView) row.findViewById(R.id.name_2);             this.snsTypeIcon_2 = (ImageView) row.findViewById(R.id.sns_type_icon_2);            //avatar            this.avatar_1.setBackgroundResource(R.drawable.default_avatar);            this.avatar_2.setBackgroundResource(R.drawable.default_avatar);            //name            this.name_1.setText(name);            this.name_2.setText(name+"_2");                    }           }           /**     * Adds the similar item.     *     * @param atSimilarGroupListPosition the at similar group list position     * @param parrent the parrent     * @param contact1 the contact1     * @param contact2 the contact2     * @param context the context     * @return the similar item     */    public SimilarItem addSimilarItem(int atSimilarGroupListPosition,LinearLayout parrent,final Context context) {              LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);          final RelativeLayout row = (RelativeLayout)inflater.inflate(R.layout.merge_item,null);          final SimilarItem item = new SimilarItem(row,"Si"+atSimilarGroupListPosition, context);       item.atSimilarGroupListPosition = atSimilarGroupListPosition;       parrent.addView(row);       System.out.println("MergeList.addSimilarItem");       return item;    }        /**     * The Class SimilarGroup.     */    public class SimilarGroup{                /** The similar_item_ list. */        private ArrayList<SimilarItem> similar_item_List = new ArrayList<SimilarItem>();                /**         * Instantiates a new similar group.         */        public SimilarGroup() {                    }                /**         * Select first.         *         * @param isChecked the is checked         */        public void selectFirst(boolean isChecked) {            similar_item_List.get(0).checkBox.setChecked(isChecked);            System.out.println("MergeList.selectFirst isChecked=" + isChecked);        }                /**         * Gets the checked position.         *         * @return the checked position         */        public int getCheckedPosition() {            for (int i = 0; i < similar_item_List.size(); i++) {                if (similar_item_List.get(i).isCheck()) {                    return i;                }            }            return -1;        }    }            /**     * Adds the similar group.     *     * @param parrent the parrent     * @param similarListOfLocal the similar list of local     * @param sns the sns     * @param context the context     * @return the similar group     */    public SimilarGroup addSimilarGroup(LinearLayout parrent, Context context) {        final SimilarGroup similarGroup = new SimilarGroup();        final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);           final LinearLayout group = (LinearLayout) inflater.inflate(R.layout.merge_group,null);                 final int lengthOfSimiarGroupList = list_similarGroup.size();        final LinearLayout groupLinearLayout = (LinearLayout) group.findViewById(R.id.group);        for (int i = 0; i < 3; i++) {            final SimilarItem similarItem = addSimilarItem(lengthOfSimiarGroupList, groupLinearLayout, context);            similarItem.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {                    @Override                public void onCheckedChanged(CompoundButton buttonView,                        boolean isChecked) {                    if (isChecked) {                        for (int i = 0; i < similarGroup.similar_item_List.size(); i++) {                            final SimilarItem similarItemOfGroup = similarGroup.similar_item_List.get(i);                            if (similarItem.checkBox != similarItemOfGroup.checkBox) {                                similarItemOfGroup.checkBox.setChecked(false);                            }                        }                    }                } });                similarGroup.similar_item_List.add(i, similarItem);        }        parrent.addView(group);        System.out.println("MergeList.addSimilarGroup");        return similarGroup;    }           /**     * Select all.     *     * @param isChecked the is checked     */    public void selectAll(boolean isChecked){        for (int i = 0; i < list_similarGroup.size(); i++) {                list_similarGroup.get(i).selectFirst(isChecked);         }    }           /* (non-Javadoc)     * @see android.app.Activity#onCreate(android.os.Bundle)     */    @Override    protected void onCreate(Bundle savedInstanceState) {        setContentView(R.layout.merge_list);        layoutSimilarGroupList = (LinearLayout) this.findViewById(R.id.merge_list);              //init similar list        list_similarGroup.clear();        for(int i = 0; i < 5; i++) {            list_similarGroup.add(addSimilarGroup(layoutSimilarGroupList,this));        }                //setBtnEvent();        final CheckBox selectAll = (CheckBox) this.findViewById(R.id.selectedAll);        selectAll.setOnCheckedChangeListener(new OnCheckedChangeListener() {             @Override            public void onCheckedChanged(CompoundButton buttonView,                    boolean isChecked) {                selectAll(isChecked);            }        });        selectAll.setChecked(true);                final Button cancel = (Button) findViewById(R.id.btn_cancel);        cancel.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {               finish();            }        });                final Button ok = (Button) findViewById(R.id.btn_ok);        ok.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {               finish();            }        });        super.onCreate(savedInstanceState);    }}


效果如图:





热点排行