大佬教程收集整理的这篇文章主要介绍了android – Picasso和适配器与viewHolder,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我和毕加索一起工作有问题.我无法从Target类访问viewHolder.保存下载的图片时出现问题.有人可以帮帮我????请.
这是适配器的代码:
public AsanasAdapter(List<Asana> asanaList, Context mContext){
this.mContext = mContext;
this.asanaList = asanaList;
this.layoutInflater = (LayoutInflater) mContext.getSystemservice(Context.LAYOUT_INFLATER_serviCE);
}
@Override
public int getCount() {
return asanaList.size();
}
@Override
public Asana getItem(int position) {
return asanaList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder =null;
if(convertView==null){
viewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.asanas_item, null);
viewHolder.asanaName = (TextView) convertView.findViewById(R.id.asana_Name);
viewHolder.asanaDesc = (TextView) convertView.findViewById(R.id.asana_desc);
viewHolder.asanaImg = (ImageView) convertView.findViewById(R.id.asana_img);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) convertView.getTag();
}
String name = getItem(position).getName();
String desc = getItem(position).getDescShort();
viewHolder.asanaDesc.setText(desc);
viewHolder.asanaName.setText(Name);
final File imgFile = new File(Environment.getDataDirectory()+"/"+getItem(position).getId()+".png");
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
viewHolder.asanaImg.setImageBitmap(myBitmap);
}
else if (isNetworkConnected()) {
Log.d("MYLOGGGGGGGG", MYurl.bASE_URL + "/" + getItem(position).getImgThumb() + "");
final ViewHolder finalViewHolder = viewHolder;
PiCasso.with(mContext)
.load(MYurl.bASE_URL + "/" + getItem(position).getImgThumb())
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, PiCasso.LoadedFrom from) {
viewHolder
File fPath = Environment.getDataDirectory();
File file = new File(fPath, getItem(position)+".png");
if (!file.exists()) {
try {
file.mkdirs();
file.createNewFile();
} catch (IOException E) {
e.printStackTrace();
}
}
FiLeoutputStream out = null;
try{
out = new FiLeoutputStream(filE);
bitmap.compress(Bitmap.CompressFormat.PNG,100,out);
}
catch (Exception E){
e.printStackTrace();
}
finally {
try{
if (out != null){
out.close();
}
}
catch (IOException E){
e.printStackTrace();
}
}
}
@Override
public void onBitmapFailed(Drawable errorDrawablE) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawablE) {
}
});
}
else{
// viewHolder.asanaImg.setImageBitmap();
}
return convertView;
}
public Boolean isNetworkConnected() {
Connectivitymanager cm = (Connectivitymanager) mContext.getSystemservice(Context.CONNECTIVITY_serviCE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
return false;
} else
return true;
}
static class ViewHolder {
ImageView asanaImg;
TextView asanaName;
TextView asanaDesc;
}
}
解决方法:
这里创建一个实现Target的新类,如:
public class myTarget implements Target {
ViewHolder holder;
public myTarget(ViewHolder holder){
this.holder = holder;
}
@Override
public void onBitmapLoaded(Bitmap bitmap, PiCasso.LoadedFrom from) {
}
@Override
public void onBitmapFailed(Drawable errorDrawablE) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawablE) {
}
}
并在您的代码中使用它,如:
myTarget target = new myTarget(viewHolder) {
@Override
public void onBitmapLoaded(Bitmap bitmap, PiCasso.LoadedFrom from) {
//Use ViewHolder here
File fPath = Environment.getDataDirectory();
File file = new File(fPath, getItem(position)+".png");
if (!file.exists()) {
try {
file.mkdirs();
file.createNewFile();
} catch (IOException E) {
e.printStackTrace();
}
}
FiLeoutputStream out = null;
try{
out = new FiLeoutputStream(filE);
bitmap.compress(Bitmap.CompressFormat.PNG,100,out);
}
catch (Exception E){
e.printStackTrace();
}
finally {
try{
if (out != null){
out.close();
}
}
catch (IOException E){
e.printStackTrace();
}
}
}
};
PiCasso.with(mContext)
.load(MYurl.bASE_URL + "/" + getItem(position).getImgThumb())
.into(target);
以上是大佬教程为你收集整理的android – Picasso和适配器与viewHolder全部内容,希望文章能够帮你解决android – Picasso和适配器与viewHolder所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。