2014-11-18 2 views
0

Я использую AyncTask для получения данных с сервера и установки его в listview..IllegalStateException: содержимое адаптера изменилось, но ListView не получил уведомление android

Для уведомления изменения в ListView Я зову mAdapter.notifyDataSetChanged(); in onPostExecute() method

Я использую Pull to refresh listview библиотека

Тем не менее я получаю IllegalStateException

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

GetList_ontouch

private class GetList_ontouch extends AsyncTask<String, Void, Void> { 

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

     progressBar1.setVisibility(0); 

    } 

    @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","Reached"); 
       newsList = new ArrayList<HashMap<String, String>>(); 


      } 

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

      // Making a request to url and getting response 
      String 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); 






        String 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++) { 

         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); 


           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); 

           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) { 
        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; 
      Log.e("error", "kareeScroll error_flag = 1"); 
      // error = "Internet Connection Error"; 

     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     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);*/ 
      String jsonStr_temp=sharedPrefs.getString("jsonStr", ""); 
      if (jsonStr_temp=="") {    
       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{ 
       //newsList=null; 
       new GetList_refresh().execute(index_th,jsonStr_temp); 
       //newsList = new ArrayList<HashMap<String, String>>(); 
      } 
     } 

     else{ 
      listView.setVisibility(0); 
      main_error.setText(""); 
      main_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(); 
     } 

     // Dismiss the progress dialog 
     progressBar1.setVisibility(8); 

    } 

} 

GetList_ ReFRESH // вызывается, когда нет сети .Это показывает данные, полученные из локальной переменной

private class GetList_refresh extends AsyncTask<String, String, Void> { 
      Dialog dialog = new Dialog(getActivity()); 
      String jsonStr; 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       // Showing progress dialog 

        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
        dialog.setContentView(R.layout._wait_dialog); 
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 
        dialog.show(); 



      } 

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

       jsonStr=params[1]; 
       Log.e("json","karjson "+jsonStr); 
        // 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); 

        editor.putString("jsonStr", jsonStr); 
        editor.commit(); 

        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) { 
          e.printStackTrace(); 
         } 
        } else { 
         Log.e("ServiceHandler", "Couldn't get any data from the url"); 
        }       
       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); 




       // Dismiss the progress dialog 
       if (dialog.isShowing()){ 
        dialog.dismiss(); 
       } 



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

     } 

OnCreateView ...

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


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


     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.addHeaderView(pan_breaking_new); 
     mSeparatorsSet = new TreeSet<Integer>(); 
     mSeparatorsSet_alternate_layout = new TreeSet<Integer>(); 
     mSeparatorsSet_live_layout = new TreeSet<Integer>(); 

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

     return rootView; 
    } 

MyCursorAdapter

private class MyCustomAdapter extends BaseAdapter { 

     private Activity activity; 
     Boolean result; 
     private final LayoutInflater inflater = null; 
     public ImageLoader imageLoader; 

     private static final int TYPE_ITEM = 0; 
     private static final int TYPE_SEPARATOR = 1; 
     private static final int TYPE_SEPARATOR_ALTERNATE = 2; 
     private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 3; 
     private int live_type = 0; 


     private LayoutInflater mInflater; 

     public MyCustomAdapter(Activity a, ArrayList<HashMap<String, String>> d) { 
      mInflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      activity = a; 
      //newsList=d; 
      imageLoader = new ImageLoader(activity.getApplicationContext()); 
     } 

     @Override 
     public int getItemViewType(int position) { 

      int separtorValue; 
      int pos = mSeparatorsSet.contains(position) ? TYPE_SEPARATOR: TYPE_ITEM; 
      live_type = mSeparatorsSet_live_layout.contains(position) ? TYPE_SEPARATOR: TYPE_ITEM; 
      if(pos==1){ 
       //Log.e("--->if called- position->", String.valueOf(position)); 
       if(mSeparatorsSet_alternate_layout.contains(position)){ 

        //Log.e("--->if called-->", String.valueOf(position)); 
        separtorValue = 2; 
       }else{ 

        separtorValue = 1; 
       } 


      }else{ 

       separtorValue = 0; 
      } 


      return separtorValue; 
     } 


     @Override 
     public int getViewTypeCount() { 
      Log.e("--->TYPE_MAX_COUNT called-->", String.valueOf(TYPE_MAX_COUNT)); 
      return TYPE_MAX_COUNT; 
     } 

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

     @Override 
     public HashMap<String, String> getItem(int position) { 
      return newsList.get(position); 
     } 

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

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      NewsViewHolder holder = null; 
      int type = getItemViewType(position); 

      Log.e("--->SHISHIR-->", String.valueOf(live_type)); 

      /*System.out.println("getView " + position + " " + convertView 
        + " type = " + type); 
**/ 
      //Log.e("--->SHISHIR-->", String.valueOf(position) + " -->live"+String.valueOf(mSeparatorsSet_live_layout.first())); 



      if (convertView == null) { 
       holder = new NewsViewHolder(); 

       //Log.e("--itempostion", String.valueOf(getItem(type))); 

       switch (type) { 
       case TYPE_ITEM: 




        if (CURRENT_THEME==1) { 
         convertView = mInflater.inflate(
           R.layout.theme_one_row_small, null); 
        } 

        else{ 
         convertView = mInflater.inflate(
           R.layout.theme_one_row_small_new, null); 
        } 




        holder.img_flag = (ImageView) convertView.findViewById(R.id.img_live_flag); 
        holder.id = (TextView) convertView.findViewById(R.id.fid); 
        holder.live = (TextView) convertView.findViewById(R.id.live); 
        holder.flag = (TextView) convertView.findViewById(R.id.flag); 
        holder.name = (TextView) convertView 
          .findViewById(R.id.title); 

        holder.img = (ImageView) convertView 
          .findViewById(R.id.list_image); 

        imageLoader 
          .DisplayImage(
            com.rb.library.All_link.IMAGE_URI_BANNER 
              + newsList.get(position).get(
                All_link.TAG_THUMB_URL), 
            holder.img); 

        break; 
       case TYPE_SEPARATOR_ALTERNATE: 





        if (CURRENT_THEME==1) { 
         convertView = mInflater 
           .inflate(R.layout.theme_one_row_big, null); 
        } 

        else{ 
         convertView = mInflater 
           .inflate(R.layout.theme_one_row_big_new, null); 
        } 



        holder.flag = (TextView) convertView.findViewById(R.id.flag); 

        holder.img_flag = (ImageView) convertView.findViewById(R.id.img_live_flag); 
        holder.id = (TextView) convertView.findViewById(R.id.fid); 
        holder.live = (TextView) convertView.findViewById(R.id.live); 
        holder.name = (TextView) convertView 
          .findViewById(R.id.title); 
        holder.img = (ImageView) convertView 
          .findViewById(R.id.list_image); 


        break; 
       case TYPE_SEPARATOR: 
        convertView = mInflater 
          .inflate(R.layout.theme_banner, null); 
        holder.flag = (TextView) convertView.findViewById(R.id.flag); 
        holder.id = (TextView) convertView.findViewById(R.id.fid); 
        holder.name = (TextView) convertView 
          .findViewById(R.id.title); 
        holder.img = (ImageView) convertView 
          .findViewById(R.id.list_image); 

        break; 


       } 


       convertView.setTag(holder); 
      } else { 
       holder = (NewsViewHolder) convertView.getTag(); 
      } 

      switch (type) { 
      case TYPE_ITEM: 

       if(live_type == 1){ 

        holder.img_flag.setVisibility(0); 
        holder.live.setText("live"); 

       }else{ 

        holder.live.setText("not_live"); 
        holder.img_flag.setVisibility(8); 
       } 
       imageLoader.DisplayImage(com.rb.library.All_link.IMAGE_URI+ newsList.get(position).get(All_link.TAG_THUMB_URL), 
         holder.img); 
       holder.id.setText(String.valueOf(newsList.get(position).get(
         All_link.TAG_ID))); 
       holder.flag.setText("normal"); 

       break; 
      case TYPE_SEPARATOR_ALTERNATE: 

       if(live_type == 1){ 

        holder.img_flag.setVisibility(0); 
        holder.live.setText("live"); 
        //Log.e("--itempostion Live", "live"); 
       }else{ 

        holder.live.setText("not_live"); 
        holder.img_flag.setVisibility(8); 
       } 

       imageLoader.DisplayImage(com.rb.library.All_link.IMAGE_URI+ newsList.get(position).get(All_link.TAG_THUMB_URL), 
         holder.img); 
       holder.id.setText(String.valueOf(newsList.get(position).get(
         All_link.TAG_ID))); 
       holder.flag.setText("normal"); 

       Log.e("karthik", "karthik "+com.rb.library.All_link.IMAGE_URI+ newsList.get(position).get(All_link.TAG_THUMB_URL)); 

       break; 
      case TYPE_SEPARATOR: 
       Log.e("--banner Images", com.rb.library.All_link.IMAGE_URI_BANNER 
         + newsList.get(position).get(All_link.TAG_BANNER_THUMB_URL)); 
       imageLoader.DisplayImage(com.rb.library.All_link.IMAGE_URI_BANNER 
         + newsList.get(position).get(All_link.TAG_BANNER_THUMB_URL), 
         holder.img); 
       holder.id.setText(String.valueOf(newsList.get(position).get(
         All_link.TAG_BANNER_ID))); 
       holder.flag.setText(newsList.get(position).get(All_link.TAG_BANNER_THUMB_URL)); 
       break; 
      } 





      holder.name.setText(String.valueOf(newsList.get(position).get(All_link.TAG_NEWS_TITLE))); 

      return convertView; 
     } 

    } 

ответ

0

Вы не должны вызывать в doInBackground() любой метод, который обновляет список. Вы должны собрать все в doInBackground, вернуть его в результате и затем обновить список в onPostExecute. , потому что onPostExecute и onProgressUpdate выполняются в потоке пользовательского интерфейса, а doInBackground выполняется в другом потоке.

+0

Согласно вам, на какой строке кода я должен работать? –

+0

ArrayList newsList - это список, прикрепленный к ListView, поэтому каждый добавление в NewsList должен быть помещен в метод onPostExecute –

0

Не воссоздавать адаптер каждый раз doInBackground это вызов

mAdapter = new MyCustomAdapter(getActivity(), newsList); 
listView.setAdapter(mAdapter); 

Создайте его раз и навсегда где-то актуально.

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

А потом вернуться List в doInBackground

return newsList; 

в И изменить onPostExecute, как это, чтобы интегрировать результаты в адаптере. onPostExecute работает в потоке пользовательского интерфейса и был разработан для работы с такими типами операций, как обновление адаптера.

@Override 
protected void onPostExecute(List<HashMap<String, String>> result) 
{ 
    // Assuming here MyCustomAdapter is an ArrayAdapter 
    mAdapter.clear(); 
    mAdapter.addAll(result); 
    mAdapter.notifyDataSetChanged(); 
    // [...] 
} 

AsyncTask будет выглядеть следующим образом:

private class GetList_refresh extends AsyncTask<String, String, List<HashMap<String, String>>> 
+0

Я постараюсь выполнить это ... Спасибо за предложение ... –

+0

PLS посмотрите на мой метод OnCreateView() ... и предложите мне, если какие-либо изменения будут внесены в это слишком –

+0

Вы даете 'sharedPrefs' значение, 2 раза подряд. Удалите первый раз 'sharedPrefs = getActivity(). GetSharedPreferences (All_link MyPREFERENCES, Context.MODE_PRIVATE);' – ToYonos