将位图添加到GridView



我试图弄清楚为什么它不起作用。带有r.id.drawables(不包括在代码中(的适配器正常工作。仅将位图放入ImageView中也可以正常工作。我认为问题在我的适配器中,但我不知道在哪里。任何帮助将不胜感激。谢谢。

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

            }
        });
    }
}

和我的适配器

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也许问题在我的布局文件中。

<?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>

在图像加载完成后尝试调用适配器

griddata.setadapter(新的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();
                            }
                        });

最新更新