在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 百戰(zhàn)經(jīng)典第十二戰(zhàn)-GridView動態(tài)刪除Item
百戰(zhàn)經(jīng)典第二十戰(zhàn)-ListView中點擊button跳轉到撥號界面實例
百戰(zhàn)經(jīng)典第十一戰(zhàn)-GridView動態(tài)添加Item
百戰(zhàn)經(jīng)典第二戰(zhàn)-好玩的Spinner控件
百戰(zhàn)經(jīng)典第五戰(zhàn)-各種對話框Dialog精彩薈萃
百戰(zhàn)經(jīng)典第八戰(zhàn)-BitmapFactory.Options對資源圖片進行縮放
百戰(zhàn)經(jīng)典第四戰(zhàn)-玩轉ListView
百戰(zhàn)經(jīng)典第十五-竊聽風云之短信監(jiān)聽
前言
百戰(zhàn)經(jīng)典第十四戰(zhàn)-網(wǎng)絡交互,基于Baas用戶表查詢功能實現(xiàn)
百戰(zhàn)經(jīng)典第九戰(zhàn)-ViewFlipper實現(xiàn)幻燈效果
百戰(zhàn)經(jīng)典第三戰(zhàn)-實現(xiàn)畫圖板
百戰(zhàn)經(jīng)典第十七戰(zhàn)-基于加速度傳感器的搖一搖功能實例
百戰(zhàn)經(jīng)典第十戰(zhàn)-LayoutAnimation布局動畫效果
百戰(zhàn)經(jīng)典第七戰(zhàn)-顯示倒計時的Button按鈕
百戰(zhàn)經(jīng)典第六戰(zhàn)-Activity啟動模式小樣
百戰(zhàn)經(jīng)典第十二戰(zhàn)-GridView動態(tài)刪除Item
百戰(zhàn)經(jīng)典第十六戰(zhàn)-圖片或頭像設置功能
百戰(zhàn)經(jīng)典第十九戰(zhàn)-短信監(jiān)聽實現(xiàn)驗證碼自動填入
百戰(zhàn)經(jīng)典第一戰(zhàn)—聽話的TextView
百戰(zhàn)經(jīng)典第十八戰(zhàn)-自定義控件實現(xiàn)一鍵清空輸入框
百戰(zhàn)經(jīng)典第十三戰(zhàn)-網(wǎng)絡交互,基于Baas實現(xiàn)用戶注冊功能

百戰(zhàn)經(jīng)典第十二戰(zhàn)-GridView動態(tài)刪除Item

用過UC瀏覽器的都熟悉如下功能:

這里寫圖片描述

長按圖標會彈出刪除的圖標,點擊刪除會刪除此項Item,下面研究一下如何實現(xiàn)類似效果。

1.配置布局main.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent" >  
    <GridView  
        android:id="@+id/gridView"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:numColumns="4" >  
    </GridView>  
</RelativeLayout>  

2.配置GridView的填充組件布局 grid_item.xml:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:id="@+id/ll_grid_item"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:gravity="center"  
    android:orientation="vertical" >  
    <FrameLayout  
        android:id="@+id/starred_item_layout"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:layout_gravity="center" >  
        <LinearLayout  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:layout_marginRight="4dip"  
            android:layout_marginTop="4dip"  
            android:gravity="center"  
            android:orientation="vertical" >  
            <ImageView  
                android:id="@+id/img"  
                android:layout_width="60dip"  
                android:layout_height="55dip" />  
            <TextView  
                android:id="@+id/name_tv"  
                android:layout_width="70dip"  
                android:layout_height="wrap_content"  
                android:layout_marginTop="10dip"  
                android:gravity="center"  
                android:textColor="@android:color/black"  
                android:textSize="15sp"  
                android:textStyle="bold" />  
        </LinearLayout>  
        <ImageView  
            android:id="@+id/delete_markView"  
            android:layout_width="20dip"  
            android:layout_height="20dip"  
            android:layout_gravity="right|top"  
            android:adjustViewBounds="true"  
            android:src="@drawable/delete"  
            android:visibility="gone" />  
    </FrameLayout>  
</LinearLayout> 

設置了id為delete_markView的ImageView的layout_gravity屬性為right|top,說明該圖片位于右上角,設置了其visibility為gone,說明該圖片初始時是不顯示的,后期可以控制該圖片的顯示。

3.adapter適配器文件:

package com.example.longdemo;  
//省略導入包
public class GridViewAdapter extends BaseAdapter {  
    private ArrayList<HashMap<String, Object>> myList;  
    private Context mContext;  
    private TextView name_tv;  
    private ImageView img;  
    private View deleteView;  
    private boolean isShowDelete=false;// 根據(jù)這個變量來判斷是否顯示刪除圖標,true是顯示,false是不顯示  
    public GridViewAdapter(Context mContext,  
            ArrayList<HashMap<String, Object>> myList) {  
        this.mContext = mContext;  
        // this.names=names;  
        this.myList = myList;  
    }  
    public void setIsShowDelete(boolean isShowDelete) {  
        this.isShowDelete = isShowDelete;  
        notifyDataSetChanged();  
    }  
    @Override  
    public int getCount() {  
        return myList.size();  
    }  
    @Override  
    public Object getItem(int position) {  
        return myList.get(position);  
    }  
    @Override  
    public long getItemId(int position) {  
        return position;  
    }  
    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        convertView = LayoutInflater.from(mContext).inflate(R.layout.grid_item,  
                null);  
        img = (ImageView) convertView.findViewById(R.id.img);  
        name_tv = (TextView) convertView.findViewById(R.id.name_tv);  
        deleteView = convertView.findViewById(R.id.delete_markView);  
        deleteView.setVisibility(isShowDelete ? View.VISIBLE : View.GONE);// 設置刪除按鈕是否顯示  
        img.setBackgroundResource(myList.get(position).get("image").hashCode());  
        name_tv.setText(myList.get(position).get("name").toString());  
        return convertView;  
    }  
}

設置變量isShowDelete標識是否顯示刪除圖標,默認是false 不顯示,在getView方法中通過判斷該標識,使用setVisibility方法控制刪除圖標的顯示。同時定義了setIsShowDelete方法,供調(diào)用出調(diào)用以傳入isShowDelete參數(shù)的值。

4.MainActivity.java:

package com.example.longdemo;  
  //省略導入包
public class MainActivity extends Activity implements OnItemLongClickListener {  
    private GridView mGridView;  
    private GridViewAdapter mAdapter;  
    private boolean isShowDelete = false;  
    private ArrayList<HashMap<String, Object>> myList;  
    final String[] name = new String[] { "test", "testa", "testb", "testc", "testd",  
            "testf", "testg" };  
    final int[] pic = new int[] { R.drawable.pic,  
            R.drawable.pic, R.drawable.pic,  
            R.drawable.pic, R.drawable.pic,  
            R.drawable.pic, R.drawable.pic };  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mGridView = (GridView) findViewById(R.id.gridView);  
        mGridView.setOnItemLongClickListener(this);//長按事件監(jiān)聽  
        myList = getMenuAdapter(pic, name);  

        mAdapter = new GridViewAdapter(MainActivity.this, myList);  
        mGridView.setAdapter(mAdapter);  
    }  
    @Override  
    public boolean onItemLongClick(AdapterView<?> parent, View view,  
            int position, long id) {  
        if (isShowDelete) {  
            isShowDelete = false;  
        } else {  
            isShowDelete = true;  
            mAdapter.setIsShowDelete(isShowDelete);  
            mGridView.setOnItemClickListener(new OnItemClickListener() {  
                @Override  
                public void onItemClick(AdapterView<?> parent, View view,  
                        int position, long id) {  
                    delete(position);//刪除選中項  
                    Log.i("------>", "進來了么");  
                    mAdapter = new GridViewAdapter(MainActivity.this, myList);//重新綁定一次adapter  
                    mGridView.setAdapter(mAdapter);  
                    mAdapter.notifyDataSetChanged();//刷新gridview  
                }  
            });  
        }  
        Log.i("------>", "進來了沒");  
        mAdapter.setIsShowDelete(isShowDelete);//setIsShowDelete()方法用于傳遞isShowDelete值  
        return true;  
    }  
    private void delete(int position) {//刪除選中項方法  
        ArrayList<HashMap<String, Object>> newList = new ArrayList<HashMap<String, Object>>();  
        if (isShowDelete) {  
            myList.remove(position);  
            isShowDelete = false;  
        }  
        newList.addAll(myList);  
        myList.clear();  
        myList.addAll(newList);  
    }  
    private ArrayList<HashMap<String, Object>> getMenuAdapter(//將數(shù)據(jù)裝入List  
            int[] menuImageArray, String[] menuNameArray) {  
        ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();  
        for (int i = 0; i < menuImageArray.length; i++) {  
            HashMap<String, Object> map = new HashMap<String, Object>();  
            map.put("image", menuImageArray[i]);  
            map.put("name", menuNameArray[i]);  
            data.add(map);  
        }  
        return data;  
    }  
}  

MainActivity實現(xiàn)了OnItemLongClickListener 接口,監(jiān)聽GridView的長按事件。同時設置了isShowDelete 變量用于記錄刪除圖片的顯示和隱藏,設置時調(diào)用setIsShowDelete()方法用于傳遞isShowDelete值到適配器類中。設置了Map集合存儲image和string的值,可以參照注釋進行理解。

5.運行實例如下:

這里寫圖片描述

效果已經(jīng)實現(xiàn),結合上一節(jié)的動態(tài)添加,可以實現(xiàn)動態(tài)添加和刪除的功能。