Android 获取有关GridView的拉入刷新的错误

Android 获取有关GridView的拉入刷新的错误,android,gridview,pull-to-refresh,Android,Gridview,Pull To Refresh,我有一个gridview来显示url中的图像。我想添加拉刷新功能。然而,我得到了一个错误,我不知道logcat输出说了什么。你能帮我解决这个错误吗 这是我的活动类,它给出了错误 public class ImageGridFragment extends AbsListViewBaseFragment { public static final int INDEX = 1; DisplayImageOptions options; private PullToRefreshGridView

我有一个gridview来显示url中的图像。我想添加拉刷新功能。然而,我得到了一个错误,我不知道logcat输出说了什么。你能帮我解决这个错误吗

这是我的活动类,它给出了错误

public class ImageGridFragment extends AbsListViewBaseFragment {

public static final int INDEX = 1;

DisplayImageOptions options;
private PullToRefreshGridView mPullRefreshGridView;
List<String> imageUrls  = getImages.IMAGE;
GridView mGridView;

@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_);
    mGridView = mPullRefreshGridView.getRefreshableView();

    mGridView.setAdapter(new ImageAdapter());

    mGridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            startImagePagerActivity(position);
        }
    });
    mGridView.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                int position, long id) {
            startAddCollectionActivity(position);
            return true;
        }
    });

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

    });

    return rootView;
}

private List<String> getData() {
    return imageUrls;
}

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.addAll(getData());
        ((BaseAdapter) mGridView.getAdapter()).notifyDataSetChanged(); 

        // 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;
}   


}
编辑:此行获取错误:mPullRefreshGridView=PullToRefreshGridView rootView.findViewByIdR.id.gridview\u1

onCreateView函数第78行出现错误-只有您知道这是哪一行

但我猜一下,这条线可能失败了:

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

对不起,我忘了说哪一行出错了。是的,你是对的,那行给出了错误,但为什么呢?我问的是:你确定layout gridview\u main有id为gridview\u的元素吗?是的,gridview\u在gridview\u main中。那么你就有一个难看的问题了。看看
mPullRefreshGridView = (PullToRefreshGridView) rootView.findViewById(R.id.gridview_);