将图像设置为pull以刷新gridView时出错

时间:2015-02-06 13:37:24

标签: android gridview pull-to-refresh

在我的应用中,我使用gridview来显示来自网址的图片。我想将Chrisbanes PullToRefreshGridview library集成到我的应用程序中。

当我尝试集成时,我收到了ImageAdapter的错误。我想,当我尝试为ImageAdapter设置imageUrls但是我找不到它时,我错过了一些东西。

请帮帮我。 THX。

这是我的活动:

public class ImageGridFragment extends AbsListViewBaseFragment{

public static final int INDEX = 1;
Context context;    
DisplayImageOptions options;

//Setting image urls to the list
List<String> imageUrls  = getImages.IMAGE;

private PullToRefreshGridView mPullRefreshGridView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    options = new DisplayImageOptions.Builder()
            .showImageOnLoading(R.drawable.ic_stub)
            .showImageForEmptyUri(R.drawable.ic_empty)
            .showImageOnFail(R.drawable.ic_error)
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(true)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.gridview_main, container, false);

    mPullRefreshGridView = (PullToRefreshGridView) rootView.findViewById(R.id.gridview_);
    rootView = mPullRefreshGridView.getRefreshableView();


            // Set a listener to be invoked when the list should be refreshed.
            mPullRefreshGridView.setOnRefreshListener(new OnRefreshListener2<GridView>() {

                @Override
                public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
                    Toast.makeText(getActivity(), "Pull Down!", Toast.LENGTH_SHORT).show();
                    new GetDataTask().execute();
                }

                @Override
                public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
                    Toast.makeText(getActivity(), "Pull Up!", Toast.LENGTH_SHORT).show();
                    new GetDataTask().execute();
                }

            });



    listView = (GridView) rootView.findViewById(R.layout.item_grid_image);
    ((GridView) listView).setAdapter(new ImageAdapter());

    return rootView;
}


private class GetDataTask extends AsyncTask<Void, Void, List<String>> {

    @Override
    protected List<String> doInBackground(Void... params) {
        // Simulates a background job.
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
        }
        return imageUrls;
    }

    @Override
    protected void onPostExecute(List<String> result) {
        imageUrls = getImages.IMAGE;

        // Call onRefreshComplete when the list has been refreshed.
        mPullRefreshGridView.onRefreshComplete();

        super.onPostExecute(result);
    }
}   

public class ImageAdapter extends BaseAdapter {

    private LayoutInflater inflater;

    ImageAdapter() {
        inflater = LayoutInflater.from(getActivity());
    }

    @Override
    public int getCount() {
        return imageUrls.size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        View view = convertView;

        if (view == null) {
            view = inflater.inflate(R.layout.item_grid_image, parent, false);
            holder = new ViewHolder();
            assert view != null;
            holder.imageView = (ImageView) view.findViewById(R.id.image);
            holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }

        ImageLoader.getInstance()
                .displayImage(imageUrls.get(position), holder.imageView, options, new SimpleImageLoadingListener() {
                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                        holder.progressBar.setProgress(0);
                        holder.progressBar.setVisibility(View.VISIBLE);
                    }

                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                        holder.progressBar.setVisibility(View.GONE);
                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                        holder.progressBar.setVisibility(View.GONE);
                    }
                }, new ImageLoadingProgressListener() {
                    @Override
                    public void onProgressUpdate(String imageUri, View view, int current, int total) {
                        holder.progressBar.setProgress(Math.round(100.0f * current / total));
                    }
                });

        return view;
    }
}

static class ViewHolder {
    ImageView imageView;
    ProgressBar progressBar;
}       

}

这是logcat输出:

    02-06 13:20:41.255: E/AndroidRuntime(2274): FATAL EXCEPTION: main
02-06 13:20:41.255: E/AndroidRuntime(2274): java.lang.NullPointerException
02-06 13:20:41.255: E/AndroidRuntime(2274):     at com.example.imageLoaderLibrary.ImageGridFragment.onCreateView(ImageGridFragment.java:88)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.View.measure(View.java:15172)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1850)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1102)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1275)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4214)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.Choreographer.doCallbacks(Choreographer.java:555)
02-06 13:20:41.255: E/AndroidRuntime(2274):     at android.view.Choreographer.doFrame(Choreographer.java:525)

0 个答案:

没有答案