tabhost+listview多选 添加 删除 例子

本程序 涉及到了listview的多选 删除 添加。以及tabhost的使用。代码可能有点混乱, 这也是我结合网上资料做的,将就看吧。效果类似ucweb的历史书签管理。当然很难看啊 效果我感觉就是那个意思,比较简陋。见谅了

 

下看下面效果图

默认显示基本设置

tabhost+listview多选 添加 删除 例子

点击管理后 的效果

tabhost+listview多选 添加 删除 例子

 

 点击添加的效果

tabhost+listview多选 添加 删除 例子

 

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

>

<!-- RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

-->

<TabHost android:id="@id/android:tabhost"

    android:layout_height="fill_parent"

    android:layout_width="fill_parent"

    android:layout_above="@+id/gridview"

    >

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:orientation="vertical"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        >

          <TabWidget android:id="@id/android:tabs"

              android:layout_height="wrap_content"

              android:layout_width="fill_parent"

              android:gravity="left"

              

              />

          <FrameLayout android:id="@id/android:tabcontent"

              android:layout_height="fill_parent"

              android:layout_width="fill_parent"

              

              > 

              <LinearLayout android:id="@+id/cb"

                android:orientation="vertical"

                android:layout_width="fill_parent"

                android:layout_height="fill_parent"

                >

                <LinearLayout 

                    android:orientation="vertical"

                    android:layout_width="fill_parent"

                    android:layout_height="fill_parent"

                    android:layout_weight="1"

                    

                >

                <CheckBox android:id="@+id/checkbox01" 

                        android:layout_width="fill_parent" 

                         android:layout_height="wrap_content" 

                        android:text=" 启用 自定义配置"

                      />

                 <CheckBox android:id="@+id/checkbox02" 

                        android:layout_width="fill_parent" 

                        android:layout_height="wrap_content" 

                        android:text=" 启用默认配置"

                      />

                </LinearLayout>

                <GridView android:id="@+id/gridview"

                    android:layout_width="fill_parent"

                    android:layout_height="wrap_content"

                 android:background="@drawable/button"

                    />

                    <!--  -->

                

               </LinearLayout>

            <LinearLayout android:id="@+id/list"    

                  android:layout_width="fill_parent"

                  android:layout_height="fill_parent"

                  android:orientation="vertical"

                  >

                  <ListView android:id="@+id/listview"

                      android:layout_width="fill_parent"

                      android:layout_height="fill_parent"

                      android:cacheColorHint="#00000000"

                      android:layout_weight="1" 

                      >

                      <!--android:background="@drawable/listviewbackground"  -->

                  </ListView> 

                  <GridView android:id="@+id/gridview01"

                    android:layout_width="fill_parent"

                    android:layout_height="wrap_content"

                    android:background="@drawable/button"

                />  

              </LinearLayout>

          </FrameLayout>

    </LinearLayout>

</TabHost>

</LinearLayout>

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

  

 <ImageView 

     android:id="@+id/imgview"

     android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignParentLeft="true"

    android:padding="5dp"

    />

 

  <TextView 

    android:id="@+id/link"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:textSize="18sp"

    android:padding="3dp"

       android:gravity="center_vertical"

  />

  

</LinearLayout>

 

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, GreenActivity!</string>

    <string name="app_name">green</string>

    <drawable name="gridviewbackground">#0077AA</drawable>

    <drawable name="listviewbackground">#FFFFFF</drawable> 

    <drawable name="black">#000000</drawable>

    <drawable name="bg">#E6ECF6</drawable>

    <drawable name="fc">#99CCFF</drawable>

    <drawable name="gd">#577FB5</drawable>

</resources>

 

 

GreenActivity.java
package com.android.green;



import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashMap;

import java.util.List;

import java.util.Map; 

import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.app.Dialog;

import android.app.TabActivity;

import android.content.Context;

import android.content.DialogInterface;

import android.graphics.Color;

import android.opengl.Visibility;

import android.os.Bundle;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.Adapter;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.CompoundButton.OnCheckedChangeListener;

import android.widget.EditText;

import android.widget.GridView;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.TabHost;

import android.widget.TabHost.OnTabChangeListener;

import android.widget.TabWidget;

import android.widget.TextView;

import android.widget.Toast;



public class GreenActivity extends TabActivity {

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

    private GridView configGrid, managerGrid;

    private String configData[] = {"应用","退出"};

    private String managerData[] ={"添加","删除","退出"};

    private ListView listview = null;

    private SimpleAdapter adapter;

    private List list;

    

    private Map<String, Object> listTemp;

    private EditText et ;

    private CheckBox whiteCb, defWhiteCb;

    private int index = 0;

    private AlertDialog addDlg, exitDlg, removeDlg;

    /*-- configGrid底部菜单选项下标--*/

    private final int CONFIG_ITEM_APPLY = 0;// 应用

    private final int CONFIG_ITEM_EXIT = 1;// 退出

    /*-- managerGrid底部菜单选项下标--*/

    private final int MANAGE_ITEM_ADD = 0; // 添加

    private final int MANAGE_ITEM_REMOVE = 1; // 删除

    private final int MANAGE_ITEM_EXIT = 2; // 退出

     

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

        whiteCb = (CheckBox)findViewById(R.id.checkbox01);

        defWhiteCb = (CheckBox)findViewById(R.id.checkbox02);

        

        whiteCb.setOnCheckedChangeListener(new OnCheckedChangeListener() 

        {

            @Override

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 

            {

                if (whiteCb.isChecked())

                {

                    System.out.println("white is checked");

                }

            }

        });

        defWhiteCb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            

             

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                 

                if(defWhiteCb.isChecked())

                System.out.println("default white is checked");

            }

        });

        // 对话框添加

        et = new EditText(this);

        et.setSingleLine(true);

        addDlg = new AlertDialog.Builder(GreenActivity.this).setTitle("添加页面").setView(et).

        setPositiveButton("确定",new DialogInterface.OnClickListener() {

            

            public void onClick(DialogInterface dialog, int which) {

                

                 addItem(et.getText().toString());

            }

             

        }).setNegativeButton("取消", null).create() ;

  

        //退出确认对话框

        exitDlg = new AlertDialog.Builder(this).setTitle("友情提醒").setMessage("确定要退出吗?").

        setPositiveButton("确定",new DialogInterface.OnClickListener() {

            

            public void onClick(DialogInterface dialog, int which) {

                // TODO Auto-generated method stub

                finish();

            }

        }).setNegativeButton("取消", null).create();

        

        // 删除确认对话框

        removeDlg = new AlertDialog.Builder(this).setTitle("删除提示").setMessage("确定删除选中的内容吗?").

        setPositiveButton("确定", new DialogInterface.OnClickListener() {

            

            public void onClick(DialogInterface dialog, int which) {

                // TODO Auto-generated method stub

                removeS(list); 

            }

        }).setNegativeButton("取消", null).create();

        

        //TabHost的相关设置

        int width =45;  

        int height =50;

        final TabHost tabhost = getTabHost();

        tabhost.addTab(tabhost.newTabSpec("checkbox").setIndicator("基本配置").setContent(R.id.cb));

        tabhost.addTab(tabhost.newTabSpec("listview01").setIndicator("管理").setContent(R.id.list));

        final TabWidget tabwidget = tabhost.getTabWidget();

       

        for (int i = 0; i < tabwidget.getChildCount(); i++)

        {

            //设置页签高度和页签内字体属性

            TextView tv = (TextView)tabwidget.getChildAt(i).findViewById(android.R.id.title);

            tabwidget.getChildAt(i).getLayoutParams().height = height;  

            tabwidget.getChildAt(i).getLayoutParams().width = width; 

       //     tabwidget.setBackgroundResource(R.drawable.toolbar);

            tv.setTextSize(15);

            tv.setTextColor(Color.BLACK);

            tv.setGravity(Gravity.CENTER_HORIZONTAL);

        }

       //配置页gridview的设置

        configGrid = (GridView)findViewById(R.id.gridview);

        configGrid.setNumColumns(configData.length);

        GridAdapter gridAdapter = new GridAdapter(this,Arrays.asList(configData));

        configGrid.setAdapter(gridAdapter);

      //白名单页gridview的设置

        managerGrid = (GridView)findViewById(R.id.gridview01);

        managerGrid.setNumColumns(managerData.length);

        GridAdapter grid01Adapter = new GridAdapter(this,Arrays.asList(managerData));

         managerGrid.setAdapter(grid01Adapter);

        

         listview = (ListView)findViewById(R.id.listview);

         adapter = new SimpleAdapter(this, getData(),

                  R.layout.listview, new String[]{"link","img"},new int[]{R.id.link, R.id.imgview});                  

        listview.setAdapter(adapter);

        listview.setOnItemClickListener(new OnItemClickListener() {



            // 捕捉点击 对图片进行变换

             

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 

            { 

                Map <String, Object>m1 = (Map <String, Object>)list.get(arg2);

                if (m1.get("img").equals( 2130837509))         //2130837509为图片select.jpg在R中的编号

                {

                    ChangeImg(arg2,true);

                }

                else

                {

                    ChangeImg(arg2,false);

                }

            }

            

        });

        

        configGrid.setOnItemClickListener( new OnItemClickListener(){



            @Override

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)

            {

                switch(arg2)

                {

                case CONFIG_ITEM_APPLY:        // 发送白名单 默认白名单的配置 接收配置

                    System.out.println("hello world");

                    break;

                case CONFIG_ITEM_EXIT:  

                    finish();

                    break;

                default:

                }

            }                  

         });

         

        //白名单管理页面的监听器

         managerGrid.setOnItemClickListener(new OnItemClickListener(){

            @Override

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 

            {

                switch(arg2)

                {

                case MANAGE_ITEM_ADD:     // 弹出一个页面用来添加白名单 发送消息

                        addDlg.show();      // 从dialog中接受输入的内容

                    break;

                case MANAGE_ITEM_REMOVE://删除选中的listview项  发送消息

                    removeDlg.show();

                    break;

                case MANAGE_ITEM_EXIT:    // 退出

                    exitDlg.show(); 

                    break;

                default:

                }

            }             

         });

         

    }

    

    //变换图像(选中未选中)

    private void ChangeImg(int selectedItem, boolean b)

    {

        SimpleAdapter la = adapter;

        HashMap<String, Object> map = (HashMap<String, Object>)la.getItem(selectedItem);

        if (b)

            map.put("img", R.drawable.radio_on);

        else 

            map.put("img", R.drawable.radio_off);

        la.notifyDataSetChanged();

    }

    

    public class GridAdapter extends BaseAdapter{

        Context context;

        List list;

        public GridAdapter(Context c,List datalist){

            this.context = c;

            list = datalist;

        }

     

        public GridAdapter(OnTabChangeListener onTabChangeListener,

                List<String> asList) {

            // TODO Auto-generated constructor stub

        }

        public int getCount() {

            // TODO Auto-generated method stub

            return list.size();

        }



        public Object getItem(int position) {

            // TODO Auto-generated method stub

            return position;

        }

        public long getItemId(int position) {

            // TODO Auto-generated method stub

            return position;

        }



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

            TextView tv;

            if(convertView == null){

                tv = new TextView(context);

            }else{

                tv = (TextView)convertView;

            }

            tv.setLayoutParams( new GridView.LayoutParams(110,48));

            tv.setTextColor(Color.WHITE);

            tv.setGravity(Gravity.CENTER);

            tv.setTextSize(20);

            tv.setText(list.get(position).toString());

     

            return tv;

        }

        

    }

    /**

     * 初始化list

     * @return

     */

    private List getData(){

        list = new ArrayList();

        Map<String,Object> map = new HashMap<String,Object>();

        Map<String,Object> map2 = new HashMap<String,Object>();

        Map<String,Object> map3 = new HashMap<String,Object>();

        Map<String,Object> map4 = new HashMap<String,Object>();

        Map<String,Object> map5 = new HashMap<String,Object>();

        Map<String,Object> map6 = new HashMap<String,Object>();

        Map<String,Object> map7 = new HashMap<String,Object>();

        Map<String,Object> map8 = new HashMap<String,Object>();

        Map<String,Object> map9 = new HashMap<String,Object>();

         

        map.put("img", R.drawable.radio_off);

        map.put("link", "http://3g.uc.cn/portal/index.html");

        map2.put("img", R.drawable.radio_off);

        map2.put("link", "http://mv.ucweb.com/e?id=118");

        map3.put("img", R.drawable.radio_off);

        map3.put("link", " http://mv.ucweb.com/t?id=bookmarks-rss-android");

        map4.put("img", R.drawable.radio_off);

        map4.put("link", "http://mv.ucweb.com/t?id=bookmarks-rss-android");

        map5.put("img", R.drawable.radio_off);

        map5.put("link", "http://mv.ucweb.com/t?id=bookmarks-rss-android");

        map6.put("img", R.drawable.radio_off);

        map6.put("link", "http://mv.ucweb.com/t?id=bookmarks-rss-android");

        map7.put("img", R.drawable.radio_off);

        map7.put("link", "http://mv.ucweb.com/t?id=bookmarks-rss-android");

         map8.put("img", R.drawable.radio_off);

        map8.put("link", "http://mv.ucweb.com/t?id=bookmarks-rss-android");

         map9.put("img", R.drawable.radio_off);

        map9.put("link", "http://mv.ucweb.com/e?id=118"); 

        

        list.add(map);

        list.add(map2);

        list.add(map3);

        list.add(map4);

        list.add(map5);

        list.add(map6);

        list.add(map7);

        list.add(map8);

        list.add(map9);

        return list;

    }

    

    //删除listview被选中的item

     public void removeS(List list)

    {

          ArrayList<Integer>  indexTemp = new ArrayList<Integer>();

          int size = list.size();

          int temp;

          System.out.println("list.size = "+size);

          for (int i = 0; i < size; i++)

          {

               listTemp = (Map<String, Object>)list.get(i);

               if (listTemp.get("img").equals(2130837510))

               {

                   indexTemp.add(i);

               }

          }

          if (0 != indexTemp.size())

          {

              for (int i=  0; i<indexTemp.size(); i++)

              {

                  if (i == 0)

                  {

                      temp =  (Integer)indexTemp.get(i);

                  }

                  else

                  {

                      temp = (Integer)indexTemp.get(i)-i;

                 

                  }

                  list.remove(temp);

                  adapter.notifyDataSetChanged(); 

              }

          }      

    }

     

     //为listview 添加item

     public void addItem(String linkString)

     {

         HashMap<String, Object> map = new HashMap<String, Object>();

         map.put("img", R.drawable.radio_off);

         map.put("link",linkString);

         list.add(map);

         adapter.notifyDataSetChanged();

     }

     

}

 

 

你可能感兴趣的:(ListView)