Android .IllegalStateException:适配器的内容已更改,但ListView未收到通知

Android .IllegalStateException:适配器的内容已更改,但ListView未收到通知,android,listview,android-asynctask,scroll,Android,Listview,Android Asynctask,Scroll,我正在使用AyncTask从服务器获取数据并将其设置为listview 为了通知对listview的更改,我调用mAdapter.notifyDataSetChanged;在onPostExecute方法中 我正在使用图书馆 但我还是得到了非法的例外 GetList_ontouch private class GetList_ontouch extends AsyncTask<String, Void, Void> { @Override protected voi

我正在使用AyncTask从服务器获取数据并将其设置为listview

为了通知对listview的更改,我调用mAdapter.notifyDataSetChanged;在onPostExecute方法中

我正在使用图书馆

但我还是得到了非法的例外

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

    }

您不应该在doInBackground中调用任何更新列表的方法。您应该收集doInBackground中的所有内容,作为结果返回,然后在onPostExecute中更新列表。
因为onPostExecute和onProgressUpdate在UI线程中执行,而doInBackground在不同的线程中执行。

不要在每次调用doInBackground时重新创建适配器

在相关的地方一劳永逸地创建它

mAdapter = new MyCustomAdapter(getActivity(), new ArrayList<HashMap<String, String>>());
listView.setAdapter(mAdapter);
并像这样更改onPostExecute,以将结果集成到适配器中。onPostExecute在UI线程中运行,设计用于处理此类操作,如更新适配器

@Override
protected void onPostExecute(List<HashMap<String, String>> result)
{
    // Assuming here MyCustomAdapter is an ArrayAdapter
    mAdapter.clear();
    mAdapter.addAll(result);
    mAdapter.notifyDataSetChanged();
    // [...]
}
异步任务如下所示:

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

ArrayList newsList是附加到ListView的列表,因此每个附加的newsList都应该放在onPostExecute方法中。请查看我的OnCreateView方法。。。如果您给sharedPrefs一个值,连续两次,请建议我是否对其进行任何更改。删除第一次SharedReferences=getActivity.GetSharedReferencesAll_link MyPREFERENCES,Context.MODE_PRIVATE;好啊mAdapter是MyAdapter的一个对象,它扩展了BaseAdapter。因此mAdapter.clear;mAdapter.addAllresult;不工作您正在适配器中直接从活动使用新闻列表。所以你不需要做mAdapter.clear;mAdapter.addAllresult;由于新闻列表是由doInBackground修改的,只需执行mAdapter.notifyDataSetChanged;您必须清除适配器中的数据,因此基本上是空的新闻列表
return newsList;
@Override
protected void onPostExecute(List<HashMap<String, String>> result)
{
    // Assuming here MyCustomAdapter is an ArrayAdapter
    mAdapter.clear();
    mAdapter.addAll(result);
    mAdapter.notifyDataSetChanged();
    // [...]
}
private class GetList_refresh extends AsyncTask<String, String, List<HashMap<String, String>>>