Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当滚动条到达末尾时,Gridview将从开始刷新_Java_Android_Json_Eclipse - Fatal编程技术网

Java 当滚动条到达末尾时,Gridview将从开始刷新

Java 当滚动条到达末尾时,Gridview将从开始刷新,java,android,json,eclipse,Java,Android,Json,Eclipse,在gridview中加载数据时会发生这种情况。这是我的片段,包含gridview上的滚动侦听器。但每当我重新加载数据时,整个gridview都会重新加载并从顶部开始滚动,而不是从加载数据的位置开始。我使用的是单网格视图 public class Women_Ethnic_Fragment extends Fragment { private static String url = "http://------/-------"; private in

在gridview中加载数据时会发生这种情况。这是我的片段,包含gridview上的滚动侦听器。但每当我重新加载数据时,整个gridview都会重新加载并从顶部开始滚动,而不是从加载数据的位置开始。我使用的是单网格视图

    public class Women_Ethnic_Fragment extends Fragment {


        private static String url = "http://------/-------";

        private int mVisibleThreshold = 5;
        private int mCurrentPage = 0;
        private int mPreviousTotal = 0;
        private boolean mLoading = true;
        private boolean mLastPage = false;

        public Women_Ethnic_Fragment() {
        }

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

            View rootView = inflater.inflate(
       R.layout.gridview_fragment, container,
                    false);
            setRetainInstance(true);
            arrayList = new ArrayList<Items>();
            gridView = (GridView) rootView.findViewById(R.id.gridView1);

            new LoadData().execute(url);
     //scrolling portion
            gridView.setOnScrollListener(new OnScrollListener() {
                @Override
                public void onScroll(AbsListView view, 
                     int firstVisibleItem,
                        int visibleItemCount, int totalItemCount) {

                    if (mLoading) {
                        if (totalItemCount > mPreviousTotal) {

                            mLoading = false;
                            mPreviousTotal = totalItemCount;
                            mCurrentPage++;


                            if (mCurrentPage + 1 > 50) {
                                mLastPage = true;
                            }
                        }
                    }
                    if (!mLastPage
                            && !mLoading
    && (totalItemCount - visibleItemCount) <= (firstVisibleItem + mVisibleThreshold)) {
//new asynctask called
                new LoadData()
                    .execute("http://-------/---------");
                        mLoading = true;
                    }
                }

                @Override
                public void onScrollStateChanged(AbsListView view, 
       int scrollState) {

                }

            });

            return rootView;

        }
    //my asynctask
        private class LoadData extends AsyncTask<String, 
                            Void, Void> {


            @Override
            protected void onPostExecute(Void result) {

                tp.dismiss();


                adap = new  Grid_View_Adatper(getActivity().getApplicationContext(),
                        arrayList);
                gridView.setAdapter(adap);
                super.onPostExecute(result);
            }

            @Override
            protected void onPreExecute() {

        tp = new TransparentProgressDialog(getActivity(),
                        R.drawable.spinner);


                tp.setCancelable(false);
                tp.setCanceledOnTouchOutside(false);

                tp.show();
                super.onPreExecute();
            }

    @Override
    protected Void doInBackground(String... urls) {
        try {

            HttpClient client = new DefaultHttpClient();
            HttpGet httpget = new HttpGet(urls[0]);
            HttpResponse response = client.execute(httpget);
            HttpEntity entity = response.getEntity();
                String data = EntityUtils.toString(entity);

                    JSONArray json = new JSONArray(data);


                    for (int i = 0; i < json.length(); i++) {

                        JSONObject e = json.getJSONObject(i);

                        String name = e.getString("name");
                        String price = e.getString("price");
                        String image = e.getString("image");
                        String code = e.getString("sku");
                        tems = new Items(name, price, image, code);
                        arrayList.add(tems);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (ClientProtocolException e) {


                } catch (IOException e) {


                } catch (RuntimeException e) {

                }

                return null;
            }
        }

    Please help someone.
    Thanks in advane.
public class Women\u族裔\u片段扩展片段{
专用静态字符串url=”http://------/-------";
私有int MVisibleThrreshold=5;
private int mCurrentPage=0;
private int mPreviousTotal=0;
私有布尔值mLoading=true;
私有布尔值mLastPage=false;
公共妇女(种族)片段(){
}
@凌驾
创建视图上的公共视图(更平坦的充气机,
视图组容器,
Bundle savedInstanceState){
视图根视图=充气机。充气(
R.layout.gridview_片段,容器,
假);
setRetainInstance(真);
arrayList=新的arrayList();
gridView=(gridView)rootView.findViewById(R.id.gridView1);
new LoadData().execute(url);
//滚动部分
setOnScrollListener(新的OnScrollListener(){
@凌驾
public void onScroll(AbsListView视图,
int firstVisibleItem,
int visibleItemCount,int totalItemCount){
如果(最大负载){
如果(totalItemCount>MPPreviousTotal){
mLoading=假;
MPPreviousTotal=totalItemCount;
mCurrentPage++;
如果(mCurrentPage+1>50){
mLastPage=true;
}
}
}
如果(!mLastPage
&&!mLoading

&&(totalItemCount-VisibleTimeCount)问题在于您反复实例化适配器。相反,请先检查适配器,如果它不为null,然后设置数据,然后通知数据集更改

if (adapter == null) {
   adapter = new GridViewAdapter...
   gridView.setAdapter(adapter)
}

// list refers the list inside in your adapter
list.addAll(newList); // or do your implementation
adapter.notifyDataSetChanged();

很高兴,如果你能为可能有同样问题的人接受答案,那就太好了。你能帮我在抽屉布局中实现多个可扩展的listview吗。??