2016-12-16 15 views
0

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) { 
 
          } 
 
         } 
 
       ); 
 
    } 
 

 

 

 
}

+0

どのようなコンテキストが必要ですか? – Stefan

+0

トーストとピカッサの方法でコンテキストを読み込んで画像を保存したい。 –

答えて

0

あなたは、

getActivity(); 
getBaseContext(); 
this; 
"Your class".this; 
getApplicationContext(); 

たりHomeEventListAdapterクラスで

を以下のすべてのものを試してみましたです
android.R.id.context 

これらのことを試してください。 (AppCompactActivityまたはアクティビティを拡張する)ActivityクラスからHomeEventListAdapter

HomeEventListAdapter adapter=new HomeEventListAdapter(getApplicationContext()); 

"getApplicationContext()" ではない作品の場合を呼び出している間、あなたのクラスで

これを使用して

class HomeEventListAdapter extends BaseAdapter { 

    Context context; 

    //constructor 
    public HomeEventListAdapter(Context context){ 
    this.context=context; 
    } 
} 

、他のものを試してみました私は与えている。 私はあなたに文脈を与えます。

+0

はい。私はアクティビティでクラスを拡張していません。 –

+0

このクラスのオブジェクトを作成すると、アクティビティクラスから継承されません。その時それを試してください。 –

+0

どうすればいいですか? –

関連する問題