Android 获取有关GridView的拉入刷新的错误
我有一个gridview来显示url中的图像。我想添加拉刷新功能。然而,我得到了一个错误,我不知道logcat输出说了什么。你能帮我解决这个错误吗 这是我的活动类,它给出了错误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
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_);