如何实现与ImageView的changind颜色以蓝色突出的GridView多项目选择? [英] How to implement multi item selection in a GridView with ImageView changind color to blue highlight?
问题描述
我想实现在 GridView控件
多项目选择与的ImageView
改变颜色为蓝色。
我的意思是我有一个 GridView控件
与的ImageView
,我从URL加载用户的图像。
在我的 GridView控件
我想强调的多重选择图像画面(ES蓝)像
我的GridView的:
< GridView控件
机器人:ID =@ + ID / GridView控件
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:为numColumns =3
机器人:scrollbarStyle =insideOverlay
机器人:滚动条=垂直
机器人:listSelector =@空/>
IMEM在GridView:
< ImageView的的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / userLikesimg
机器人:layout_width =100dp
机器人:layout_height =100dp
机器人:背景=@彩色/ blu_facebook_transparent
机器人:scaleType =centerCrop/>
我解决unisng LayerDrawable 在我的适配器:
的 numElement 的数据类型为int,并确定选择将num元素
的 selectedElements 的是布尔阵列选定的位置元素
公共布尔[] = selectedElements新的布尔[N];
私人INT selectedElements =米; 公共查看getView(最终诠释的立场,观点埃美柯,父母的ViewGroup){
...
viewHolder.userImage.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
如果(selectedElements [位置] == FALSE){
如果(numElementi == 0){
Toast.makeText(mContext,R.string.error,Toast.LENGTH_LONG).show();
}其他{
BitmapDrawable BD =新BitmapDrawable(mContext.getResources(),viewHolder.userImage.getDrawingCache())userUrl;
//你可以检查BD为null(如果是空我重新下载图像 - 它是的cache,我加蓝trasparency像波纹管
//R.drawable.blue是trasparency形象
LayerDrawable D =新LayerDrawable(新绘制对象[] {BD,mContext.getResources()getDrawable(R.drawable.blue)});
viewHolder.userImage.setImageDrawable(四);
selectedElements [位置] =真;
numElementi--;
} }其他{
字符串imgUserurl = userUrl;
Picasso.with(mContext).load(imgUserurl).placeholder(R.drawable.ll_friend_placeholder).into(viewHolder.userImage);
viewHolder.userImage.setDrawingCacheEnabled(真);
selectedElements [位置] = FALSE;
numElementi ++;
}
}
});
...
} 公共布尔[] getSelectedElements()
{
返回selectedElements;
}
在我的活动或片段:
布尔[] = selectedElement adapter.getSelectedElements();
(我需要选定元素的位置)
I would like to implement multi item selection in a GridView
with ImageView
changing color to blue.
I mean I have a GridView
with ImageView
where I load user's image from url.
In my GridView
I would like to highlight the multiple selection image (es blue) like in picture
My GridView :
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="3"
android:scrollbarStyle="insideOverlay"
android:scrollbars="vertical"
android:listSelector="@null" />
Imem in a GridView:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/userLikesimg"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/blu_facebook_transparent"
android:scaleType="centerCrop" />
I solved unisng LayerDrawable in my adapter:
numElement is int and define num elements chosen
selectedElements is array of boolean with position elements chosen
public boolean[] selectedElements= new boolean[n];
private int selectedElements= m;
public View getView(final int position, View amico, ViewGroup parent) {
...
viewHolder.userImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (selectedElements[position] == false) {
if (numElementi == 0) {
Toast.makeText(mContext, R.string.error, Toast.LENGTH_LONG).show();
} else {
BitmapDrawable bd = new BitmapDrawable(mContext.getResources(), viewHolder.userImage.getDrawingCache())userUrl;
//you can check if the bd is null (if it is null I download image again -it is in cache- and I add blue trasparency like bellow
//R.drawable.blue is image with trasparency
LayerDrawable d = new LayerDrawable(new Drawable[] { bd, mContext.getResources().getDrawable(R.drawable.blue) });
viewHolder.userImage.setImageDrawable(d);
selectedElements[position] = true;
numElementi--;
}
} else {
String imgUserurl = userUrl;
Picasso.with(mContext).load(imgUserurl).placeholder(R.drawable.ll_friend_placeholder).into(viewHolder.userImage);
viewHolder.userImage.setDrawingCacheEnabled(true);
selectedElements[position] = false;
numElementi++;
}
}
});
...
}
public boolean[] getSelectedElements()
{
return selectedElements;
}
In my activity or fragment:
boolean[] selectedElement = adapter.getSelectedElements();
(I need position of selected element)
这篇关于如何实现与ImageView的changind颜色以蓝色突出的GridView多项目选择?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!