CheckBox列表的使用執行個體

來源:互聯網
上載者:User

import java.util.ArrayList;


import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.util.AttributeSet;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.view.View.OnClickListener;

import android.widget.ArrayAdapter;

import android.widget.CheckBox;

import android.widget.Checkable;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.TextView;


import com.sec.android.touchwiz.samples.R;

public class ListLayoutSample3Xml extends Activity {

    

    ListView mListView;

    private final String LOG_TAG_LISTLAYOUTSAMPLE3 = "ListLayoutSample3Xml";

        

        

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.listlayoutsample3xml_main);

        

        mListView = (ListView)findViewById(R.id.contactCheckList);

        // [09.10.23] ListView? choiceMode? CHOICE_MODE_MULTIPLE? ???? 

        // ??? item? check?? ??? ?

        // [E] Set ListView's choiceMode to CHOICE_MODE_MULTIPLE for multi check.

        mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

        

        ArrayList<ContactItem> list = new ArrayList<ContactItem>();      

        

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

            ContactItem contact = new ContactItem(mThumbs, mName);

            list.add(contact);

        }    

        

        // ContactAdapter ??

        ContactAdapter cAdapter = new ContactAdapter(this, R.layout.listlayoutsample3xml_row, list);

        // ListView? ContactAdapter? ??

        mListView.setAdapter(cAdapter);


    }

    

    /*

     * ContactItem? ??? Thumbnail data 

     */

    private Integer[] mThumbs = {

            R.drawable.listlayoutsample3xml_1, 

            R.drawable.listlayoutsample3xml_2, 

            R.drawable.listlayoutsample3xml_3,

            R.drawable.listlayoutsample3xml_4, 

            R.drawable.listlayoutsample3xml_5, 

            R.drawable.listlayoutsample3xml_seankingston,

            R.drawable.listlayoutsample3xml_karina, 

            R.drawable.listlayoutsample3xml_jayz, 

            R.drawable.listlayoutsample3xml_madonna};

    

    /*

     * ContactItem? ??? FullName data 

     */

    private String[] mName = 

    {

            "Anna Bay",

            "Agatha Christina",

            "Agnes Green",

            "Mom",

            "July",

            "Sean Kingston",

            "Karina",

            "Jay-Z",

            "Madonna"

    };

    

    

    /*

     * ListView? ???? Adapter. ArrayAdapter? ???? ??.

     * ContactItem type? data?? ArrayList? ???.

     */

    private class ContactAdapter extends ArrayAdapter<ContactItem> {


        private ArrayList<ContactItem> items;


        public ContactAdapter(Context context, int textViewResourceId, ArrayList<ContactItem> items) {

                super(context, textViewResourceId, items);

                this.items = items;

        }

        @Override

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

                View v = convertView;

                if (v == null) {

                    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                    v = vi.inflate(R.layout.listlayoutsample3xml_row, null);

                }

                ContactItem ti = items.get(position);

                if (ti != null) {

                        ImageView thumbview = (ImageView) v.findViewById(R.id.photo1);

                        TextView nameview = (TextView) v.findViewById(R.id.text1);

                        final CheckBox check = (CheckBox) v.findViewById(R.id.checkbox1);

                        

                        if (thumbview != null){

                            thumbview.setImageResource(ti.getContactThumb());                            

                        }

                        if (nameview != null){

                            nameview.setText(ti.getFullName());                            

                        }

                        

                        if(check != null) {

                            final int myPosition = position;

                            check.setOnClickListener(new OnClickListener() {

                                

                                public void onClick(View v) {

                                    check.post(new Runnable() {

                                        public void run() {

                                            boolean fchecked = check.isChecked();

                                            onBtnCheckChanged(myPosition, fchecked);        

                                        }

                                    });

                                    

                                }

                            });

                        }

                        

                }

                return v;

        }

    }

    

    private void onBtnCheckChanged(int position, boolean check) {

        Log.d(LOG_TAG_LISTLAYOUTSAMPLE3,"onBtnCheckChanged("+position+","+check+")");        

        mListView.setItemChecked(position, check);

    }

    

    /**

     * @author cooldawn.kim

     * 

     * Contact Item

     */

    class ContactItem{

        private Integer mContactThumb;

        private String mFullName;

        

        public ContactItem( Integer thumb, String fullName )

        {

            this.mContactThumb = thumb;

            this.mFullName = fullName;

        }

        

        public Integer getContactThumb(){

            return mContactThumb;

        }

        

        public String getFullName(){

            return mFullName;

        }

        

    } // class ContactItem

    
    public static class ItemView extends LinearLayout implements Checkable {


        public ItemView(Context context, AttributeSet attrs) {

            super(context, attrs);

        }


        public boolean isChecked() {

            CheckBox check = findCheckBox();

            if(check != null) {

                return check.isChecked();

            }                

            return false;

        }

        

        public void setChecked(boolean checked) {

            Log.d("ItemView", "setChecked("+checked+")");

            CheckBox check = findCheckBox();

            if(check != null) {

                check.setChecked(checked);

            }                

        }


        public void toggle() {

            CheckBox check = findCheckBox();

            if(check != null) {

                check.toggle();

            }

                

        }

        

        private CheckBox findCheckBox() {

            View check = findViewById(R.id.checkbox1);

            if(check != null && check instanceof CheckBox) {

                return (CheckBox)check;

            }

            return null;

        }

        

    }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.