android 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 ItemTouchHelper实现可拖拽和侧滑的列表的示例代码
- Android自定义ListView实现仿QQ可拖拽列表功能
- Android checkbox的listView(多选,全选,反选)具体实现方法
- Android中ListView + CheckBox实现单选、多选效果
- Android Recyclerview实现多选,单选,全选,反选,批量删除的功能
- Android的ListView多选删除操作实现代码
- Android中创建对话框(确定取消对话框、单选对话框、多选对话框)实例代码
- Android使用AlertDialog实现的信息列表单选、多选对话框功能
- Android自定义控件实现可多选课程日历CalendarView
- Android实现可拖拽列表和多选功能
相关文章
使用newInstance()来实例化fragment并传递数据操作
这篇文章主要介绍了使用newInstance()来实例化fragment并传递数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08
Android实现动态向Gallery中添加图片及倒影与3D效果示例
这篇文章主要介绍了Android实现动态向Gallery中添加图片及倒影与3D效果的方法,涉及Android针对图片的加载、显示、翻转、倒影等相关特效功能实现技巧2016-08-08
解决Android Studio Log.v和Log.d不显示的问题
这篇文章主要介绍了解决Android Studio Log.v和Log.d不显示的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08
Flutter Widget开发Shortcuts快捷键实例
这篇文章主要为大家介绍了Flutter Widget开发Shortcuts快捷键实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12
Android判断用户的网络类型实例讲解(2/3/4G、wifi)
这篇文章主要介绍了Android判断用户的网络类型实例,用户的网络类型分为2G、3G、4G、wifi,通过Android如何判断用户的网络类型,本文为大家揭晓2015-12-12
揭秘在ListView等AdapterView上动态添加删除项的陷阱
今天遇到这么个需求,需要在运行时动态添加ListView的item,看起来很简单,实际操作过程中却遇到了麻烦,下面揭秘在ListView等AdapterView上动态添加删除项的陷阱2016-04-04


最新评论