2017-05-27 1 views
0

J'ai essayé de comprendre pourquoi cela ne fonctionne pas. L'adaptateur avec R.id.drawables (non inclus dans le code) fonctionne correctement. Le simple fait de placer bitmap dans ImageView fonctionne également. Je pense que le problème est dans mon adaptateur mais je ne sais pas où. Toute aide sera appréciée. Merci.ajouter bitmap à GridView

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.google.gson.JsonObject; 
import com.koushikdutta.async.future.Future; 
import com.koushikdutta.async.future.FutureCallback; 
import com.koushikdutta.ion.Ion; 
import com.koushikdutta.ion.ProgressCallback; 
import com.squareup.picasso.Picasso; 

import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.ExecutionException; 

public class MainActivity extends Activity { 
    private Button chuckNorrisButton; 
    private Button catButton; 
    private ProgressBar progressBar; 
    private TextView downloadCount; 
    private TextView quoteTextView; 
    GridView gridData; 
    Future<JsonObject> downloading; 
    public List<Bitmap> bitmaps = new ArrayList<>(); 
    //public List<Integer> bitmapsInt = new ArrayList<>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     chuckNorrisButton = (Button)findViewById(R.id.donloadChuckNorrisButton); 
     catButton = (Button)findViewById(R.id.downloadCatButton); 
     progressBar = (ProgressBar)findViewById(R.id.progressBar3); 
     downloadCount = (TextView)findViewById(R.id.downloadCount); 
     quoteTextView = (TextView)findViewById(R.id.quoteTextView); 
     gridData = (GridView)findViewById(R.id.gallery_grid); 
     //gridData.setAdapter(new BitmapAdapter(getBaseContext(), bitmaps)); 


     catButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Ion.with(MainActivity.this) 
         .load("http://25.media.tumblr.com/tumblr_lpqn543evY1qb1nczo1_500.jpg")//("http://thecatapi.com/api/images/get?format=src") 
         .progressBar(progressBar) 
         .progressHandler(new ProgressCallback() { 
          @Override 
          public void onProgress(long downloaded, long total) { 
           downloadCount.setText("" + downloaded + "/" + total); 
          } 
         }) 
         .asBitmap() 
         .setCallback(new FutureCallback<Bitmap>() { 
          @Override 
          public void onCompleted(Exception e, Bitmap result) { 
           if (e != null) { 
            Toast.makeText(MainActivity.this, "Error downloading file", Toast.LENGTH_LONG).show(); 

            return; 
           } 
           //IT WORKS 
           //ImageView imageView = (ImageView)findViewById(R.id.imageView2); 
           //imageView.setImageBitmap(result); 


           bitmaps.add(result); 
          gridData.setAdapter(new BitmapAdapter(MainActivity.this, bitmaps)); 
           Toast.makeText(MainActivity.this, "File upload complete", Toast.LENGTH_LONG).show(); 

          } 
         }); 


      } 

     }); 

    } 

} 

Et mon adaptateur

public class BitmapAdapter extends BaseAdapter { 

    private Context mContext; 
    List<Bitmap> gridViewitems; 

    public BitmapAdapter(Context c, List<Bitmap> gridViewitems){ 

     mContext = c; 
     this.gridViewitems=gridViewitems; 
    } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    // create a new ImageView for each item referenced by the Adapter 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 

     if (convertView == null) { 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } 
     else 
     { 
      imageView = (ImageView) convertView; 
     } 
     imageView.setImageBitmap(gridViewitems.get(position)); 
     return imageView; 
    } 


} 

@EDIT Peut-être que le problème est dans mon dossier de mise en page.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.rafal.restapidownload.MainActivity"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/quoteTextView"> 

     <GridView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:numColumns="auto_fit" 
      android:stretchMode="columnWidth" 
      android:gravity="center" 
      android:id="@+id/gallery_grid" /> 
    </ScrollView> 

    <Button 
     android:text="Cat" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/downloadCatButton" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentEnd="true" /> 

    <Button 
     android:text="Quote" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/donloadChuckNorrisButton" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:inputType="textMultiLine" 
     android:maxLines="10" 

     android:ems="10" 
     android:id="@+id/quoteTextView" 
     android:layout_below="@+id/donloadChuckNorrisButton" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentEnd="true" /> 

    <ProgressBar 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/progressBar3" 
     android:layout_above="@+id/quoteTextView" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:text="" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/downloadCount" 
     android:layout_alignParentTop="true" 
     android:layout_alignEnd="@+id/progressBar3" /> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:srcCompat="@android:drawable/btn_dialog" 
     android:id="@+id/imageView2" 
     android:layout_marginTop="109dp" 
     android:layout_below="@+id/quoteTextView" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 
+0

Quel est le problème? – jagapathi

+0

Bitmap ne s'affiche pas dans ma grilleAfficher – PoorGuy

+0

Vous devez configurer votre adaptateur après le chargement de l'image – jagapathi

Répondre

0

Essayez d'appeler l'adaptateur après le chargement d'image est terminée

gridData.setAdapter (nouveau BitmapAdapter (MainActivity.this, bitmaps));

@Override 
          public void onCompleted(Exception e, Bitmap result) { 
           if (e != null) { 
            Toast.makeText(MainActivity.this, "Error downloading file", Toast.LENGTH_LONG).show(); 

            return; 
           } 
           //IT WORKS 
           //ImageView imageView = (ImageView)findViewById(R.id.imageView2); 
           //imageView.setImageBitmap(result); 


           bitmaps.add(result); 
gridData.setAdapter(new BitmapAdapter(MainActivity.this, bitmaps)); 
           Toast.makeText(MainActivity.this, "File upload complete", Toast.LENGTH_LONG).show(); 

          } 
         }); 
+0

Toujours rien ne se produit – PoorGuy

+0

pouvez-vous modifier la question et ajouter ce que vous avez modifié – jagapathi

+0

J'ai modifié le code dans mon premier message. – PoorGuy