展会信息港展会大全

android 实现GridView多选效果
来源:互联网   发布日期:2015-10-03 10:48:47   浏览:2841次  

导读:在使用 GridView的时候,有时需要多选上面显示的类容,比如批量删除上面显示的图片,批量上传图片等。这个时候我们可以使用层叠图来实现,效果如下:眀卑代码如下:洀愀椀渀....

在使用 GridView的时候,有时需要多选上面显示的类容,比如批量删除上面显示的图片,批量上传图片等。这个时候我们可以使用层叠图来实现,效果如下:

具体代码如下:

main.xml

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

xmlns:tools="http://schemas.android.com/tools"

android:background="#000000"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

tools:context=".MainActivity" >

<GridView

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:id="@+id/grid"

android:verticalSpacing="3dp"

android:horizontalSpacing="3dp"

android:numColumns="3"

></GridView>

</LinearLayout>

item.xml

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

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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<ImageView

android:scaleType="fitXY"

android:padding="3dp"

android:layout_height="70dp"

android:layout_width="70dp"

android:id="@+id/image_item"

/>

</LinearLayout>

mainActivity.java

package com.imageview;

import android.os.Bundle;

import android.app.Activity;

import android.view.View;

import android.widget.AdapterView;

import android.widget.GridView;

import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {

private Adpter adpter;

private GridView gridView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

int [] image={R.drawable.dog1,R.drawable.m2,R.drawable.m3,R.drawable.m4,R.drawable.m5,R.drawable.dog2};

adpter=new Adpter(image, this);

gridView=(GridView) findViewById(R.id.grid);

gridView.setAdapter(adpter);

gridView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1,

int position, long arg3) {

adpter.chiceState(position);

}

});

}

}

Adpter.java

package com.imageview;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.graphics.drawable.Drawable;

import android.graphics.drawable.LayerDrawable;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

public class Adpter extends BaseAdapter {

private int[] image;

private boolean isChice[];

private Context context;

public Adpter(int[] im, Context context) {

this.image = im;

Log.i("hck", im.length+"lenght");

isChice=new boolean[im.length];

for (int i = 0; i < im.length; i++) {

isChice[i]=false;

}

this.context = context;

}

@Override

public int getCount() {

return image.length;

}

@Override

public Object getItem(int arg0) {

return image[arg0];

}

@Override

public long getItemId(int arg0) {

return arg0;

}

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

View view = arg1;

GetView getView=null;

if (view == null) {

view = LayoutInflater.from(context).inflate(R.layout.item, null);

getView = new GetView();

getView.imageView=(ImageView) view.findViewById(R.id.image_item);

view.setTag(getView);

} else {

getView = (GetView) view.getTag();

}

getView.imageView.setImageDrawable(getView(arg0));

return view;

}

static class GetView {

ImageView imageView;

}

//主要就是下面的代码了

private LayerDrawable getView(int post) {

Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(image[post])).getBitmap();

Bitmap bitmap2=null;

LayerDrawable la=null;

if (isChice[post]== true){

bitmap2 = BitmapFactory.decodeResource(context.getResources(),

R.drawable.editable_mode_checked_tag);

}

if (bitmap2!=null) {

Drawable[] array = new Drawable[2];

array[0] = new BitmapDrawable(bitmap);

array[1] = new BitmapDrawable(bitmap2);

la= new LayerDrawable(array);

la.setLayerInset(0, 0, 0, 0, 0);//第几张图离各边的间距

la.setLayerInset(1, 0, 65, 65, 0);

}

else {

Drawable[] array = new Drawable[1];

array[0] = new BitmapDrawable(bitmap);

la= new LayerDrawable(array);

la.setLayerInset(0, 0, 0, 0, 0);

}

return la; // 返回叠加后的图

}

public void chiceState(int post)

{

isChice[post]=isChice[post]==true?false:true;

this.notifyDataSetChanged();

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港