hyljava

          listview與checkbox組合使用

          一,Layout

           

          1,main.xml

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

           

          2,item.xml

          <?xml version="1.0" encoding="utf-8"?>
          <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <Button
              android:id="@+id/button"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="測(cè)試">
            
            </Button>
            
            <CheckBox
              android:id="@+id/checkBox"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              />  
           
          </LinearLayout>

          二,Activity

           

          1,MainActivity

          package com.excetop.listradio;

          import java.util.ArrayList;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;

          import android.app.Activity;
          import android.os.Bundle;
          import android.util.Log;
          import android.view.View;
          import android.view.ViewGroup;
          import android.widget.BaseAdapter;
          import android.widget.Button;
          import android.widget.CheckBox;
          import android.widget.CompoundButton;
          import android.widget.ListView;
          import android.widget.Toast;
          import android.widget.CompoundButton.OnCheckedChangeListener;

          public class MainActivity extends Activity {
           private static final String TAG = "MainActivity";
              private ListView listView;
              private Map checkMap;
           @Override
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);
                  listView = (ListView) this.findViewById(R.id.list);
                  
                  checkMap = new HashMap<String, Object>();
                  
                  MyAdapter adapter = new MyAdapter();
                  listView.setAdapter(adapter);
                
              }
           private class MyAdapter extends BaseAdapter{
            private String[] s = new String[]{"a","b","c","d","e","a","b","c","d","e","a","b","c","d","e","a","b","c","d","e"};

            @Override
            public int getCount() {
             // TODO Auto-generated method stub
             return s.length;
            }

            @Override
            public Object getItem(int position) {
             // TODO Auto-generated method stub
             return null;
            }

            @Override
            public long getItemId(int position) {
             // TODO Auto-generated method stub
             return 0;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
             convertView = MainActivity.this.getLayoutInflater().inflate(R.layout.item, null);  //解決辦法: 每次都重新獲取View
             Button button = (Button) convertView.findViewById(R.id.button);
             button.setText(s[position]);
             final CheckBox checkBox =  (CheckBox) convertView.findViewById(R.id.checkBox);
             checkBox.setId(position);  //把position設(shè)為radioButton的id
             checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
              
              @Override
              public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
               
               if(isChecked){
                
                checkMap.put(String.valueOf(checkBox.getId()), checkBox.getId());
          //      Toast.makeText(MainActivity.this, String.valueOf( checkBox.getId()), 0).show();
               
               }else{
                checkMap.remove(String.valueOf(checkBox.getId()));
          //      Toast.makeText(MainActivity.this, String.valueOf( checkBox.getId()), 0).show();
               }
              }
             });
             
             if(checkMap.get(String.valueOf(position)) != null){
              checkBox.setChecked(true);
          //    Toast.makeText(MainActivity.this, String.valueOf(String.valueOf(position)), 0).show();
             }
             
             //這里實(shí)現(xiàn)單選框選的回顯,解決了單選框移出屏幕范圍未選中狀態(tài)
             return convertView;
            }
           }
          }

          posted on 2014-02-22 22:56 何云隆 閱讀(224) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Android

          主站蜘蛛池模板: 达孜县| 九江市| 南丰县| 临高县| 布尔津县| 阳谷县| 龙井市| 南涧| 清丰县| 花莲市| 庄河市| 崇州市| 黎川县| 宜黄县| 双峰县| 桑日县| 康马县| 临沧市| 定西市| 肥乡县| 阿拉善右旗| 儋州市| 老河口市| 鱼台县| 石家庄市| 青阳县| 西华县| 枣强县| 兴和县| 兴山县| 武穴市| 漳浦县| 巴楚县| 买车| 衡阳县| 高州市| 姚安县| 仲巴县| 清原| 罗甸县| 盐津县|