【发布时间】:2014-12-25 21:31:13
【问题描述】:
我的活动是一个 listView,我使用 MyAdapter 扩展它,它扩展了 BaseAdapter。我的列表视图显示了多个图像,我想添加一个滤色器效果,即已经点击的图片的颜色变化。
一开始所有的图片都按原样显示,但是当用户点击图片时,它的颜色会发生变化,这对图片的亮度影响较小,因此用户可以知道他们以前已经看过这张图片。我通过使用setColorFilter 方法来实现这一点。
并且点击后图像会发生变化。
我的问题是,当我向下滚动 listView 时,之前没有点击过的几张图片也显示了这种效果。而我希望这种效果只显示在点击的图像上。
我的代码:-
public class MyAdapter extends BaseAdapter {
public class ViewHolder{
ImageView image;
}
@Override
public View getView( final int arg0, View arg1, ViewGroup arg2)
{
View vi = arg1;
final ViewHolder holder;
final int type = getItemViewType(arg0);
if(arg1==null)
{
holder = new ViewHolder();
switch(type)
{
case 0:
LayoutInflater inflater = (LayoutInflater) itemlist.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi = inflater.inflate(R.layout.items, arg2,false);
holder.image = (ImageView)vi.findViewById(R.id.list_image);
holder.image.getLayoutParams().height=(int) (height/dpi);
break;
}
vi.setTag(holder);
}
else{
holder=(ViewHolder)vi.getTag();
}
Picasso.with(getApplicationContext())
.load(data.get(arg0).get(3))
.fit().centerCrop().into(holder.image);
holder.image.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
holder.image.setColorFilter(0x70C6C6C6, PorterDuff.Mode.MULTIPLY);
Toast.makeText(getApplicationContext(), "Item"+arg0+" selected", Toast.LENGTH_SHORT).show();
}});
}
return vi;
}
我做错了什么?
谢谢。
【问题讨论】:
标签: android image listview picasso