Android 当没有internet连接时,刷新时listview中的现有项将消失

Android 当没有internet连接时,刷新时listview中的现有项将消失,android,listview,android-asynctask,refresh,Android,Listview,Android Asynctask,Refresh,我有一个包含自定义布局的listview。我正在从服务器检索数据,并将其显示在listview视图中 我正在使用图书馆 互联网连接可用--->当我拉刷新时,数据成功更新 没有可用的internet连接--->当我拉刷新时,现有数据将消失,而listview为空,这是不可能的 我希望在没有可用的internet连接时,现有数据仍然可见 HomeFragent.java public View onCreateView(LayoutInflater inflater, ViewGroup conta

我有一个包含自定义布局的listview。我正在从服务器检索数据,并将其显示在listview视图中

我正在使用图书馆

互联网连接可用--->当我拉刷新时,数据成功更新

没有可用的internet连接--->当我拉刷新时,现有数据将消失,而listview为空,这是不可能的

我希望在没有可用的internet连接时,现有数据仍然可见

HomeFragent.java

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

        View rootView = inflater.inflate(R.layout.listview_layout, container,false);
        View footer_image=inflater.inflate(R.layout.listview_image_footer, null,false);
        //footer_image.setClickable(false);


            /* get theme webservice*/

        StrictMode.ThreadPolicy policy1 = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy1); 


        userFunction=new UserFunctions();

            //Breaking News Section
            slide = AnimationUtils.loadAnimation(getActivity(), R.anim.slidedown);
            fadeOut = AnimationUtils.loadAnimation(getActivity(), R.anim.fadeout);
            pan_breaking_new = (LinearLayout)rootView.findViewById(R.id.pan_breaking_new);
            //pan_breaking_new.setOnClickListener(this);    
            pan_breaking_new.setVisibility(8);

            btn_close= (ImageView) rootView.findViewById(R.id.btn_close);
            btn_close.setOnClickListener(this);
            img_share= (ImageView) rootView.findViewById(R.id.img_share);
            img_share.setOnClickListener(this);
            //END Breaking News Section

            //Ticker
            marque = (ScrollingTextView)rootView.findViewById(R.id.txtTicker);
            marque.setVisibility(8);
            //END ticker


            main_error = (TextView) rootView.findViewById(R.id.main_error);
            main_error.setText("Loading...");
            img_error = (ImageView) rootView.findViewById(R.id.img_error);
            img_error.setOnClickListener(this);


            progressBar1 = (ProgressBar) rootView.findViewById(R.id.progressBar1);
            progressBar1.setVisibility(8);



            //karthik
            refreshable_listView = (PullToRefreshListView) rootView.findViewById(R.id.listView);
            listView=refreshable_listView.getRefreshableView();
            listView.addFooterView(footer_image, null, false);

            refreshable_listView.setOnRefreshListener(new OnRefreshListener<ListView>() {

                @Override
                public void onRefresh(PullToRefreshBase<ListView> refreshView) {
                    // TODO Auto-generated method stub

                     listView=refreshable_listView.getRefreshableView();                        

                    try {
                        getTheme();
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    new GetList().execute(index_th);

                }


            });     
            newsList = new ArrayList<HashMap<String, String>>();
            mAdapter = new MyCustomAdapter(getActivity(), newsList);                            
            refreshable_listView.setAdapter(mAdapter);




            listView.setOnItemClickListener(new OnItemClickListener() {     
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                    long arg3) {

                news_flag= (TextView) view.findViewById(R.id.flag);
                news_id = (TextView) view.findViewById(R.id.fid);
                news_live = (TextView) view.findViewById(R.id.live);
                news_title_live = (TextView) view.findViewById(R.id.title);


                //news_flag.getText().toString();
                //Log.e("-->", news_flag.getText().toString());

                //checking for click banner or neews
                if(news_flag.getText().toString().equals("normal")){

                    // Starting a new async task
                    new ViewSingleNews().execute();

                }else{

                    /*Intent intent = new Intent();
                    intent.setAction(android.content.Intent.ACTION_VIEW);
                    intent.setDataAndType(Uri.parse(All_link.IMAGE_URI_BANNER+news_flag.getText().toString()),"image/*");

                    startActivity(intent);*/
                }



            }

        });
        listView.setOnScrollListener(new OnScrollListener() {

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


            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {

                int count = Integer.parseInt(index_temp)+6;
                System.out.println("Checking "+ listView.getLastVisiblePosition());
                System.out.println("----->Checking loadmore:"+ load_more);
                System.out.println("----->Checking actual:"+ count);

                   if (listView.getLastVisiblePosition()+1  == count) {

                       if(load_more==1){


                            index_temp = String.valueOf(Integer.parseInt(icount) + Integer.parseInt(index_temp));

                            new GetList_ontouch().execute(index_temp);
                        }
                    }
            }
        });

        //listView.addHeaderView(pan_breaking_new);
        mSeparatorsSet = new TreeSet<Integer>();
        mSeparatorsSet_alternate_layout = new TreeSet<Integer>();
        mSeparatorsSet_live_layout = new TreeSet<Integer>();

        new GetList_img_error().execute(index_th); // same as GetList(), but displays dialog 

        return rootView;
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.listview\u布局,容器,false);
查看页脚图片=充气机。充气(R.layout.listview\u图片页脚,null,false);
//页脚图像。可设置可点击(错误);
/*获取主题Web服务*/
StrictMode.ThreadPolicy policy1=新StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略1);
userFunction=新的UserFunctions();
//突发新闻组
slide=AnimationUtils.loadAnimation(getActivity(),R.anim.slidedown);
fadeOut=AnimationUtils.loadAnimation(getActivity(),R.anim.fadeOut);
pan_breaking_new=(LinearLayout)rootView.findviewbyd(R.id.pan_breaking_new);
//pan_breaking_new.setOnClickListener(此);
pan_breaking_new.setVisibility(8);
btn_close=(ImageView)rootView.findviewbyd(R.id.btn_close);
btn_close.setOnClickListener(此);
img_共享=(ImageView)rootView.findviewbyd(R.id.img_共享);
img_share.setOnClickListener(此);
//新闻组结束
//股票行情
marque=(ScrollingTextView)rootView.findViewById(R.id.txtTicker);
品牌设置可见性(8);
//尾端计时器
main_error=(TextView)rootView.findViewById(R.id.main_error);
main_error.setText(“加载…”);
img_error=(ImageView)rootView.findviewbyd(R.id.img_error);
img_error.setOnClickListener(此);
progressBar1=(ProgressBar)rootView.findViewById(R.id.progressBar1);
progressBar1.setVisibility(8);
//卡提克
可刷新的_listView=(PullToRefreshListView)rootView.findViewById(R.id.listView);
listView=refreshable_listView.getRefreshableView();
addFooterView(页脚图像,null,false);
可刷新的\u listView.setOnRefreshListener(新的OnRefreshListener(){
@凌驾
公共void onRefresh(PullToRefreshBase refreshView){
//TODO自动生成的方法存根
listView=refreshable_listView.getRefreshableView();
试一试{
getTheme();
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
新建GetList()。执行(索引);
}
});     
newsList=newarraylist();
mAdapter=newmycustomadapter(getActivity(),newsList);
可刷新的_listView.setAdapter(mAdapter);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0、View视图、int arg2、,
长arg3){
news_flag=(TextView)view.findViewById(R.id.flag);
news_id=(TextView)view.findviewbyd(R.id.fid);
news_live=(TextView)view.findViewById(R.id.live);
news\u title\u live=(TextView)view.findViewById(R.id.title);
//news_flag.getText().toString();
//Log.e(“-->”,news_flag.getText().toString());
//检查单击横幅或neews
if(news_flag.getText().toString().equals(“normal”)){
//启动新的异步任务
新建ViewSingleNews().execute();
}否则{
/*意图=新意图();
setAction(android.content.intent.ACTION\u视图);
setDataAndType(Uri.parse(All\u link.IMAGE\u Uri\u BANNER+news\u flag.getText().toString()),“IMAGE/*”;
星触觉(意向)*/
}
}
});
setOnScrollListener(新的OnScrollListener(){
@凌驾
公共无效onScrollStateChanged(AbsListView视图,int scrollState){
}
@凌驾
public void onScroll(AbsListView视图,int firstVisibleItem,
int visibleItemCount,int totalItemCount){
int count=Integer.parseInt(index_temp)+6;
System.out.println(“Checking”+listView.getLastVisiblePosition());
System.out.println(“--->正在检查loadmore:“+load\u more”);
System.out.println(“--->检查实际值:“+计数”);
if(listView.getLastVisiblePosition()+1==count){
如果(加载_more==1){
index_temp=String.valueOf(Integer.parseInt(icount)+Integer.parseInt(index_temp));
新的GetList_ontouch().execute(index_temp);
}
}
}
});
//addHeaderView(pan\u breaking\u new);
mseparatorset=新树集();
mseparatorset_alternate_layou=新树集();
mseparatorset_live_layout=新树集();
新建GetList_img_error().execute(index_th);//与GetList()相同,但显示对话框
返回根
private class GetList extends AsyncTask<String, Void, Void> {
        Dialog dialog = new Dialog(getActivity());
        String jsonStr;
        ArrayList<HashMap<String, String>> Local_newsList;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(String... params) {

            if (NetworkCheck.isNetworkAvailable(getActivity()) == true) {

                //Log.d("index count for array", params[0]);
                if(Integer.parseInt(params[0])==0){
                    //Log.d("index count for array","Rweached");
                    //newsList = new ArrayList<HashMap<String, String>>();
                }


                // Creating service handler class instance
                ServiceHandler sh = new ServiceHandler();

                // Making a request to url and getting response
                jsonStr = sh.makeServiceCall(All_link.HOME_DATA_URL + "/"+params[0]+"/"+ icount,
                        ServiceHandler.GET);

                Log.d("Response: ", "> " + jsonStr);

                if (jsonStr != null) {
                    try {
                        JSONObject jsonObj = new JSONObject(jsonStr);

                        // Getting JSON Array node
                        news = jsonObj.getJSONArray(All_link.TAG_NEWS);


                        err = jsonObj.getString(All_link.TAG_ERROR);
                        String more = jsonObj.getString(All_link.TAG_MORE);

                        Log.e("------>Error",String.valueOf(err));
                        Log.e("------>More",String.valueOf(more));
                        if(more.equals("0")){

                            load_more = 0;

                        }else{

                            load_more = 1;
                        }

                        // looping through All Contacts
                        for (int i = 0; i < news.length(); i++) {

                            //karthik



                            JSONObject segments_list = news.getJSONObject(i);

                            for (int plates_count = 0; plates_count < segments_list
                                    .length(); plates_count++) {


                                String plates = "";
                                if (plates_count == 3) {
                                    plates = String.valueOf("banner_image");

                                    JSONObject segments_plates = segments_list
                                            .getJSONObject(plates);

                                    //String flag = "banner_image";
                                    String id = segments_plates
                                            .getString(All_link.TAG_BANNER_ID);
                                    String banner_no = segments_plates
                                            .getString(All_link.TAG_BANNER_NO);

                                    String banner_image;

                                    if(segments_plates.getString(All_link.TAG_BANNER_THUMB_URL)==""){

                                        banner_image = All_link.TAG_NO_IMAGE;
                                    }else{

                                        banner_image = segments_plates.getString(All_link.TAG_BANNER_THUMB_URL);
                                    }

                                    String banner_status = segments_plates
                                            .getString(All_link.TAG_BANNER_STATUS);


                                    // tmp hashmap for single news
                                    HashMap<String, String> news_hashmap = new HashMap<String, String>();

                                    // adding each child node to HashMap key =>
                                    // value
                                    news_hashmap.put(All_link.TAG_BANNER_ID, id);
                                    news_hashmap.put(All_link.TAG_BANNER_NO,
                                            banner_no);
                                    news_hashmap.put(All_link.TAG_BANNER_THUMB_URL,
                                            banner_image);
                                    news_hashmap.put(All_link.TAG_BANNER_STATUS,
                                            banner_status);
                                    /*news_hashmap
                                            .put(All_link.TAG_BANNER_FLAG, flag);*/

                                    // adding contact to contact list



                                    newsList.add(news_hashmap);


                                    //karthik newsList

                                    //Local_newsList.add(news_hashmap);


                                    addSeparatorItem();
                                } else {
                                    plates = String.valueOf(plates_count + 1);

                                    JSONObject segments_plates = segments_list
                                            .getJSONObject(plates);

                                    if(segments_plates.getString(All_link.TAG_NEWS_TYPE).equals("2")){

                                        //type_of_news = segments_plates.getString(All_link.TAG_NEWS_TYPE);
                                        addSeparatorItem_for_live();
                                    }                                   

                                    String id = segments_plates.getString(All_link.TAG_ID);
                                    String news_title = segments_plates.getString(All_link.TAG_NEWS_TITLE);
                                    String news_desc = segments_plates.getString(All_link.TAG_DESC);
                                    String segment = segments_plates.getString(All_link.TAG_SEGMENT);
                                    String plate = segments_plates.getString(All_link.TAG_PLATE);

                                    String img ="";
                                    if(segments_plates.getString(All_link.TAG_THUMB_URL).equals("")){

                                        img = All_link.TAG_NO_IMAGE;

                                    }else{

                                        img = segments_plates.getString(All_link.TAG_THUMB_URL);
                                    }


                                    HashMap<String, String> news_hashmap = new HashMap<String, String>();

                                    // adding each child node to HashMap key =>
                                    // value
                                    news_hashmap.put(All_link.TAG_ID, id);
                                    news_hashmap.put(All_link.TAG_NEWS_TITLE, news_title);
                                    news_hashmap.put(All_link.TAG_DESC, news_desc);
                                    news_hashmap.put(All_link.TAG_SEGMENT, segment);
                                    news_hashmap.put(All_link.TAG_PLATE, plate);
                                    news_hashmap.put(All_link.TAG_THUMB_URL, img);
                                    //news_hashmap.put(All_link.TAG_BANNER_FLAG, flag);
                                    // adding contact to contact list

                                    newsList.add(news_hashmap);



                                    //karthik newsList

                                    //Local_newsList.add(news_hashmap);

                                    int val = 0;
                                    int val2 = 1;
                                    val = (Integer.parseInt(segment)%2)==0 ? val:val2;

                                    if((Integer.parseInt(segment)%2)!=0){
                                        Log.e("--->CHECKING ODD EVEN", String.valueOf(val));
                                        addSeparatorItem();
                                        addSeparatorItem_for_alternate();   
                                    }
                                }
                            }

                        }
                    } catch (JSONException e) {
                        Local_newsList=null;
                        e.printStackTrace();
                    }
                } else {
                    Log.e("ServiceHandler", "Couldn't get any data from the url");
                }
            } else {
                Log.e("Network Error", "Internet Connection Error");
                error_flag = 1;
                // error = "Internet Connection Error";

            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {     

            // TODO Auto-generated method stub
            mAdapter.notifyDataSetChanged();
            refreshable_listView.invalidate();
            refreshable_listView.requestLayout();
            refreshable_listView.onRefreshComplete();


            super.onPostExecute(result);


            if(error_flag==1){

                listView.setVisibility(8);
                main_error.setText("Internet Connection Error! Please check your network settings and try again");
                main_error.setVisibility(0);
                img_error.setVisibility(0);

            }else{

                listView.setVisibility(0);
                main_error.setText("");
                main_error.setVisibility(8);
                img_error.setVisibility(8);
                int currentPosition = listView.getFirstVisiblePosition();

                mAdapter = new MyCustomAdapter(getActivity(), newsList);
                //testing
                listView.setAdapter(mAdapter);
                refreshable_listView.setAdapter(mAdapter);
                 // Setting new scroll position
                listView.setSelection(currentPosition);
                mAdapter.notifyDataSetChanged();
            }

            SharedPreferences sharedPrefs = getActivity().getSharedPreferences(All_link.MyPREFERENCES,
                    Context.MODE_PRIVATE);
            sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());

            //For Breaking News Setting
            if (sharedPrefs.getInt("prefswtch4", 1) == 1) {

                if (All_link.GLOBAL_BREAKING_FLAG == 0) {

                    new getBreakingNews().execute();

                }

            } 

            //For Location Setting
            if (sharedPrefs.getInt("prefswtch1", 1) == 1) {



            } else {



            }

            //For Ticker Setting
            if (sharedPrefs.getInt("prefswtch2", 1) == 1) {

                new getTicker().execute();

            } else {

                marque.setVisibility(8);

            }




        }
        @Override
        protected void onCancelled() {
            // TODO Auto-generated method stub
            refreshable_listView.onRefreshComplete();
        }

    }
class GetList_refresh extends AsyncTask<String, String, Void>