• 带"叉叉"的GridView


    由于需要用到“删除图片”的功能,需要写这样一个小demo:


    对之前博文的修改

    发现imageView监听点击事件 效果实在不敢恭维,因此换个方式:设置Touch的监听函数, 下面的Demo没有改过来哈,自行更改哈~~~

    注意当你点击的时候会产生两个Touch,一个Down,一个Up,只要处理一个就可以了~~~

    imageView2.setOnTouchListener(new OnTouchListener() {
    				
    				@Override
    				public boolean onTouch(View v, MotionEvent event) {
    					// TODO Auto-generated method stub
    					if (event.getAction() == MotionEvent.ACTION_DOWN)
    					{
    						Log.d("dsd", "被点了");
    						Log.d("dsd", "data的大小: " + data.size() + ", position: " + position);
    						data.remove(position);
    						simpleAdapter.notifyDataSetChanged();
    						//gridView.setAdapter(simpleAdapter);
    						return true;
    					}
    					return false;
    				}
    			});



    效果图:点击右上方的“X”即可将图片从GridView中删除



    其实每个Item的布局文件时个FrameLayout, 里面有两个ImageView,一个在底一个在上

    /gridviewtest/res/layout/gridview_item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView 
            android:id="@+id/imageview1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scaleType="fitXY"
            android:background="#F12A3A"
            />
    
    	<ImageView
    	    android:id="@+id/imageview2"
    	    android:layout_width="40dip"
    	    android:layout_height="40dip"
    	    android:layout_gravity="right|top"
    	    
    	    />
    
    </FrameLayout>


    主activity_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"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <GridView 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
             android:id="@+id/my_gridview"
             android:listSelector="@android:color/black"
             android:verticalSpacing="10dp"
             android:horizontalSpacing="10dip"
             android:numColumns="3"
             android:stretchMode="columnWidth"
             />
    
    </RelativeLayout>


    MainActivity.java

    package com.example.gridviewtest;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Context;
    import android.content.res.Resources;
    import android.database.DataSetObserver;
    import android.graphics.Bitmap;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.ListAdapter;
    import android.widget.SimpleAdapter;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	private List<Map<String, Object>> data = null;
    	private GridViewAdapter simpleAdapter = null;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		GridView gridView = (GridView) findViewById(R.id.my_gridview);
    		
    		data = new ArrayList<Map<String,Object>>();
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("imageview1", R.drawable.tt);
    		map.put("imageview2", R.drawable.cha);
    		data.add(map);
    		data.add(map);
    		data.add(map);
    		data.add(map);
    		data.add(map);
    		data.add(map);
    		data.add(map);
    
    		simpleAdapter = new GridViewAdapter(getApplicationContext()
    								, data
    								, R.layout.gridview_item
    								, new String[]{"imageview1","imageview2"}
    								, new int[]{R.id.imageview1,R.id.imageview2});
    
    		gridView.setAdapter(simpleAdapter);
    		
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    	
    	public void addItem(Bitmap bitmap) {
    		Map<String, Object> item = new HashMap<String, Object>();
    		item.put("imageview1", bitmap);//添加图像
    		item.put("imageview2", R.drawable.cha);
    		data.add(item);
    		simpleAdapter.notifyDataSetChanged();
    	}
    	
    	private class GridViewAdapter extends SimpleAdapter
    	{
    		private Context context = null;
    		private int pos;
    		public GridViewAdapter(Context context,
    				List<? extends Map<String, ?>> data, int resource,
    				String[] from, int[] to) {
    			super(context, data, resource, from, to);
    			this.context = context;
    			// TODO Auto-generated constructor stub
    		}
    		@Override
    		public View getView(final int position, View convertView, ViewGroup parent) {
    			// TODO Auto-generated method stub
    			View view = super.getView(position, convertView, parent);
    			
    			ImageView imageView = (ImageView) view.findViewById(R.id.imageview2);
    			imageView.setOnClickListener(new OnClickListener() {
    				
    				@Override
    				public void onClick(View v) {
    					// TODO Auto-generated method stub
    					Toast.makeText(context, "我被点击了", Toast.LENGTH_SHORT).show();
    					data.remove(position);
    					simpleAdapter.notifyDataSetChanged();
    				}
    			});
    			
    			return view;
    		}
    	}
    }
    


    demo源码http://download.csdn.net/detail/u011133213/5914887




  • 相关阅读:
    localStorage、sessionStorage详解,以及storage事件使用
    企业和开发人员究竟该如何适应web标准?
    平面设计常用制作尺寸
    git命令
    TCP/IP、Http、Socket的区别
    canvas
    《千克》
    《小数的加法》
    fiddler设置代理
    《分数的基本性质》
  • 原文地址:https://www.cnblogs.com/james1207/p/3253758.html
Copyright © 2020-2023  润新知