picassoを使用してイメージをダウンロードしようとしています。しかし、問題は私のクラスの文脈を取得していないということです。私はコンストラクタとセッターゲッタを作ろうとしましたが、まだコンテキストを取得していません。代わりにコンテキストをMainActivity.class
にする。私は自分のコンストラクタを使っているからです。私はボタンクリックでそれを使用しています。それはgetView()
の方法で見ることができます。ここでListAdapterクラスのクラスのコンテキストを取得できません
は、このクラスの呼び出し中に私のコード
package com.example.muhammadjahanzeb.ueve1;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
import java.util.List;
/**
* Created by Haider885 on 23/11/2016.
*/
class HomeEventListAdapter extends BaseAdapter {
public static String fileName;
private class ViewHolder {
TextView eventName;
ImageView eventImageView;
Button downloadButton;
}
public Context getContext() {
return context;
}
public void setContext(Context context) {
this.context = context;
}
public Context context;;
private List<String> eventName,eventImages;
// private List<Bitmap> images;
HomeEventListAdapter(Context context, List<String> eventName, List<String> eventImages) {
this.context = context;
this.eventName = eventName;
this.eventImages = eventImages;
}
HomeEventListAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return eventName.size();
}
@Override
public Object getItem(int i) {
return eventName.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
final ViewHolder holder;
if(view==null)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view= inflater.inflate(R.layout.custom_home_card,null);
holder= new ViewHolder();
holder.eventName = (TextView)view.findViewById(R.id.homeEventName);
holder.eventImageView = (ImageView)view.findViewById(R.id.homeEventImage);
holder.downloadButton = (Button)view.findViewById(R.id.btnImageDownload);
view.setTag(holder);
}
else
{
holder=(ViewHolder)view.getTag();
}
holder.eventName.setText(eventName.get(i));
fileName = holder.eventName.getText().toString();
holder.downloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//new DownloadFile().execute(eventImages.get(i));
Context context1 = getContext();
Toast.makeText(getContext(),"Clicked",Toast.LENGTH_SHORT);
//String imageUrl = eventImages.get(i);
//new DownloadFileFromURL().execute(imageUrl);
// downloadImage(imageUrl);
// Toast.makeText(context,"Downloaded",Toast.LENGTH_SHORT);
}
});
/*====== Setting image to image view with ImageLoader ========*/
/*========================================================*/
ImageLoader.getInstance().displayImage(eventImages.get(i), holder.eventImageView, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
// Toast.makeText(view.getContext(),imageUri+" started",Toast.LENGTH_LONG).show();
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
//Toast.makeText(view.getContext(), String.format("%s%s", imageUri, failReason.getCause()),Toast.LENGTH_LONG).show();
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
//Toast.makeText(view.getContext(),imageUri+" complete",Toast.LENGTH_LONG).show();
//123 holder.imageView.setImageBitmap(loadedImage);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
// Toast.makeText(view.getContext(),imageUri+" cancelled",Toast.LENGTH_LONG).show();
}
});
/*====== Setting image to image view with ImageLoader ========*/
/*========================================================*/
return view;
}
public void downloadImage(String url)
{
Picasso.with(context)
.load(url)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
try {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/yourDirectory");
if (!myDir.exists()) {
myDir.mkdirs();
}
String name = new Date().toString() + ".jpg";
myDir = new File(myDir, name);
FileOutputStream out = new FileOutputStream(myDir);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch(Exception e){
// some action
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
}
);
}
}
どのようなコンテキストが必要ですか? – Stefan
トーストとピカッサの方法でコンテキストを読み込んで画像を保存したい。 –