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="測試">
            
            </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();
             }
             
             //這里實現(xiàn)單選框選的回顯,解決了單選框移出屏幕范圍未選中狀態(tài)
             return convertView;
            }
           }
          }

          posted on 2014-02-22 22:56 何云隆 閱讀(221) 評論(0)  編輯  收藏 所屬分類: Android

          主站蜘蛛池模板: 扬州市| 保靖县| 通州区| 英吉沙县| 渑池县| 太原市| 怀柔区| 全南县| 郯城县| 金湖县| 湖南省| 大冶市| 盘山县| 阿勒泰市| 乃东县| 中江县| 绍兴县| 乡宁县| 越西县| 安溪县| 霍城县| 金华市| 凭祥市| 怀安县| 民权县| 太白县| 朝阳市| 金华市| 日照市| 偃师市| 松滋市| 饶平县| 南岸区| 岑溪市| 十堰市| 芦溪县| 蓝山县| 邹平县| 彭泽县| 六安市| 昌黎县|