我在Android应用的网格视图适配器中有这段代码。基本上它的作用是将网格视图中的第一个图像“拟合”成方形。下一个图像被裁剪。在此部分之前省略了一些代码。
我想我正在不必要地重复一大堆东西。什么是重写此代码的更好方法?
if (position ==0) {
//set thumbnail URL
String url = item.get(position).getHDUrl();
// Trigger the download of the URL asynchronously into the image view.
Picasso.with(mContext) //
.load(url)
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.tag(view) //
.fit()
.into(holder.thumbnail);
view.setOnClickListener(new OnImageClickListener(position));
return view;
} else {
//set thumbnail URL
String url = item.get(position).getHDUrl();
// Trigger the download of the URL asynchronously into the image view.
Picasso.with(mContext) //
.load(url)
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.tag(view) //
.into(holder.thumbnail);
view.setOnClickListener(new OnImageClickListener(position));
return view;
}
答案 0 :(得分:2)
我个人会创建一个" PicassoHelper" class,简单地包装Picasso函数。
然后你可以在你的新助手类中创建一个接受bool的函数,指示它是否应该使用' .fit()'或不。
这样你可以将代码缩小为:
//Get thumbnail URL
String url = item.get(position).getHDUrl();
if (position == 0) {
// Trigger the download of the URL asynchronously into the image view.
PicassoHelper.downloadImage(url, view, holder.thumbnail, true);
} else {
// Trigger the download of the URL asynchronously into the image view.
PicassoHelper.downloadImage(url, view, holder.thumbnail, false);
}
view.setOnClickListener(new OnImageClickListener(position));
return view;
这样,无论何时使用毕加索,你都不必反复重复相同的代码。
答案 1 :(得分:1)
由于.fit()
上添加了唯一的position 0
方法,您必须在.fit()
上添加position 0
方法。
如果符合其位置,您必须将公共代码表格分开。
我不知道Picaso
对象初始化,你可以这样做,
//set thumbnail URL
String url = item.get(position).getHDUrl();
if (position ==0) {
Picasso.with(mContext) //
.load(url)
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.tag(view) //
.fit()
.into(holder.thumbnail);
} else {
Picasso.with(mContext) //
.load(url)
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.tag(view) //
.into(holder.thumbnail);
}
view.setOnClickListener(new OnImageClickListener(position));
return view;
我怀疑天气.fit()
会在您使用网址和其他参数初始化Picaso
之后发挥作用
您可以进一步增强,
//set thumbnail URL
String url = item.get(position).getHDUrl();
Picasso.with(mContext) //
.load(url)
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.tag(view) //
.into(holder.thumbnail);
if (position ==0) {
Picasso.fit();
}
view.setOnClickListener(new OnImageClickListener(position));
return view;
答案 2 :(得分:1)
我会更喜欢这个?
//set thumbnail URL
String url = item.get(position).getHDUrl();
if (position ==0) {
// Trigger the download of the URL asynchronously into the image view.
Picasso.with(mContext) //
.load(url)
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.tag(view) //
.fit()
.into(holder.thumbnail);
} else {
// Trigger the download of the URL asynchronously into the image view.
Picasso.with(mContext) //
.load(url)
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error) //
.tag(view) //
.into(holder.thumbnail);
}
view.setOnClickListener(new OnImageClickListener(position));
return view;
因为除了代码片段测试之外,我已经有一段时间从事Android工作了,唯一的变化也取决于你是否可以做下面的事情...不知道毕加索是一个对象还是什么不是,但是...你...应该明白我的意思
//set thumbnail URL
String url = item.get(position).getHDUrl();
//This was common in both if else
Picasso.with(mContext).load(url).placeholder(R.drawable.placeholder).error(R.drawable.error).tag(view).into(holder.thumbnail);
if (position ==0) {
// this was only common to the if pos=0
Picasso.fit();
}
view.setOnClickListener(new OnImageClickListener(position));
return view;