2017-07-11 1 views
0

Ich habe listview Alle Werte sind löschen und richtig zu aktualisieren, aber nur der letzte Wert ist nicht in der Listview löschen. Ein vollständiger Fragmentcode wurde hinzugefügt. Werfen Sie einen BlickFragment listview letzten Wert ist nicht verschwinden

Zum Beispiel Wenn ich drei Werte in der Listenansicht, wenn ich löschen 1 und 2 seine Entfernung und Listenansicht aktualisieren richtig, aber der letzte ist in der Listenansicht

private SwipeMenuListView mylistview; 
    String userid; 
    private EditText txtsearch; 
    private ArrayList<JobItem> jobitems; 
    private JobListAdapter adapter; 
    SwipeMenuCreator creator; 
    ImageLoader imageLoader; 
    DisplayImageOptions options; 

    public Fragment_Employer_MyJobList() { 
    } 

    public static float dp2px(Context context, int dipValue) { 
     DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
     return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.layoutjoblist, container, false); 


     imageLoader = ImageLoader.getInstance(); 
     options = new DisplayImageOptions.Builder().cacheInMemory(true) 
       .displayer(new RoundedBitmapDisplayer(1000)) 
       .cacheOnDisc(true).resetViewBeforeLoading(true) 
       .showImageForEmptyUri(R.drawable.img_app_icon) 
       .showImageOnFail(R.drawable.img_app_icon) 
       .showImageOnLoading(R.drawable.img_app_icon).build(); 

     mylistview = (SwipeMenuListView) rootView.findViewById(R.id.mylistview); 
     creator = new SwipeMenuCreator() { 

      @Override 
      public void create(SwipeMenu menu) { 
       // create "open" item 
       SwipeMenuItem openItem = new SwipeMenuItem(
         getActivity()); 
       // set item background 
       openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 
         0xCE))); 
       // set item width 
       openItem.setWidth((int) dp2px(getActivity(), 90)); 
       // set item title 
       openItem.setTitle("DELETE"); 
       // set item title fontsize 
       openItem.setTitleSize(18); 
       // set item title font color 
       openItem.setTitleColor(Color.WHITE); 
       // add to menu 
       menu.addMenuItem(openItem); 
      } 
     }; 

     txtsearch = (EditText) rootView.findViewById(R.id.txtsearch); 
     txtsearch.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
             int count) { 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
              int after) { 
      } 

      @Override 
      public void afterTextChanged(Editable theWatchedText) { 
       String text = txtsearch.getText().toString().toLowerCase(Locale.getDefault()); 
       if (adapter != null) 
        adapter.filter(text); 
      } 
     }); 


     return rootView; 
    } 

    SharedPreferences settings; 

    @Override 
    public void onResume() { 
     super.onResume(); 
     jobitems = new ArrayList<JobItem>(); 
     jobitems.clear(); 
     adapter.notifyDataSetChanged(); 


     settings = getActivity().getSharedPreferences(AppUtils.PREFS_NAME, Context.MODE_PRIVATE); 
     userid = settings.getString("userid", ""); 
     AuthController.getStaticInstance(). 

       employer_joblist(getActivity(), userid, APIConstants 

         .POST, new AuthControllerInterface.AuthControllerCallBack() 

       { 
        @Override 
        public void onSuccess(String message) { 
         Log.e("==response==>", "==response==>" + message); 
         try { 
          JSONArray mainarray = new JSONArray(message); 
          for (int i = 0; i < mainarray.length(); i++) { 
           JSONObject json_job = mainarray.getJSONObject(i); 
           JobItem item = new JobItem(); 
           item.Id = json_job.getString("ID"); 
           item.EMPID = json_job.getString("EMPID"); 
           item.TITLE = json_job.getString("TITLE"); 
           item.DESC = json_job.getString("DESC"); 
           item.CID = json_job.getString("CID"); 
           item.PRICE = json_job.getString("PRICE"); 
           item.LOCAT = json_job.getString("LOCAT"); 
           item.ADATE = json_job.getString("ADATE"); 
           item.FOLLOW = json_job.getString("FOLLOW"); 

           JSONArray array = json_job.getJSONArray("IMAGES"); 
           if (array.length() > 0) { 
            if (!array.isNull(0)) 
             item.IMG1 = array.getString(0); 
            if (!array.isNull(1)) 
             item.IMG2 = array.getString(1); 
            if (!array.isNull(2)) 
             item.IMG3 = array.getString(2); 
            if (!array.isNull(3)) 
             item.IMG4 = array.getString(3); 
            if (!array.isNull(4)) 
             item.IMG5 = array.getString(4); 
           } 


           jobitems.add(item); 
          } 
          adapter = new JobListAdapter(getActivity(), jobitems); 
          mylistview.setAdapter(adapter); 
          mylistview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
           @Override 
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

            JobItem item = jobitems.get(position); 
            Intent intent = new Intent(getActivity(), Activity_Emp_jobdetail.class); 
            Bundle bundle = new Bundle(); 
            bundle.putSerializable("jobitem", item); 
            intent.putExtras(bundle); 
            startActivity(intent); 
           } 
          }); 
          mylistview.setMenuCreator(creator); 

          mylistview.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { 
           @Override 
           public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { 
            switch (index) { 
             case 0: 
              // unfollow 
              userid = settings.getString("userid", ""); 
              AuthController.getStaticInstance().employer_delete_job(getActivity(), userid, jobitems.get(position).Id, APIConstants.POST, new AuthControllerInterface.AuthControllerCallBack() { 
               @Override 
               public void onSuccess(String message) { 
                Log.e("==response==>", "==response==>" + message); 

                try { 
                 JSONObject obj = new JSONObject(message); 
                 Toast.makeText(getActivity(), obj.getString("ERROR") + "", Toast.LENGTH_LONG).show(); 
                 // onResume(); 
                } catch (JSONException e) { 
                 e.printStackTrace(); 
                 Toast.makeText(getActivity(), message + "", Toast.LENGTH_LONG).show(); 
                 // onResume(); 
                } 

                //setup 

                onResume(); 


               } 

               @Override 
               public void onFailed(String error) { 
                Log.e("==error==>", "==error==>" + error); 
               } 

              }, Fragment_Employer_MyJobList.this); 
              break; 

            } 
            // false : close the menu; true : not close the menu 
            return false; 

           } 
          }); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
          try { 
           JSONObject obj = new JSONObject(message); 
           Toast.makeText(getActivity(), obj.getString("ERROR") + "", Toast.LENGTH_LONG).show(); 
          } catch (JSONException e1) { 
           e1.printStackTrace(); 
           Toast.makeText(getActivity(), message + "", Toast.LENGTH_LONG).show(); 
          } 
         } 
        } 

        @Override 
        public void onFailed(String error) { 
         Log.e("==error==>", "==error==>" + error); 
        } 
       }, Fragment_Employer_MyJobList.this); 


    } 

    @Override 
    public void showLoading() { 
     AppUtils.showProgress(getActivity(), "Please wait..."); 
     // onResume(); 
    } 

    @Override 
    public void stopLoading() { 
     AppUtils.dismissProgress(); 
     // onResume(); 
    } 


    public class OnItemClickListner implements View.OnClickListener { 

     int mposition; 
     JobItem item; 

     public OnItemClickListner(int position, JobItem item) { 
      this.mposition = position; 
      this.item = item; 
     } 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getActivity(), Activity_Emp_jobdetail.class); 
      Bundle bundle = new Bundle(); 
      bundle.putSerializable("jobitem", item); 
      intent.putExtras(bundle); 
      startActivity(intent); 
     } 
    } 

    private class JobListAdapter extends BaseAdapter { 
     LayoutInflater _inflater; 
     private List<JobItem> worldpopulationlist = null; 
     private ArrayList<JobItem> arraylist; 

     public JobListAdapter(Context context, List<JobItem> worldpopulationlist) { 
      _inflater = LayoutInflater.from(context); 
      this.worldpopulationlist = worldpopulationlist; 
      this.arraylist = new ArrayList<JobItem>(); 
      this.arraylist.addAll(worldpopulationlist); 
     } 

     public int getCount() { 
      // TODO Auto-generated method stub 
      return worldpopulationlist.size(); 
     } 

     public JobItem getItem(int position) { 
      // TODO Auto-generated method stub 
      return worldpopulationlist.get(position); 
     } 

     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 

      ViewHolder _holder; 
      if (convertView == null) { 

       convertView = _inflater.inflate(R.layout.layout_job_row, null); 
       _holder = new ViewHolder(); 

       _holder.txtjobtitle = (TextView) convertView 
         .findViewById(R.id.txtjobtitle); 
       _holder.txtjobbudget = (TextView) convertView 
         .findViewById(R.id.txtjobbudget); 
       _holder.txtjobdesc = (TextView) convertView 
         .findViewById(R.id.txtjobdesc); 
       _holder.imageviewjob = (ImageView) convertView 
         .findViewById(R.id.imageviewjob); 
       _holder.txtlocation = (TextView) convertView 
         .findViewById(R.id.txtlocation); 
       convertView.setTag(_holder); 
      } else { 
       _holder = (ViewHolder) convertView.getTag(); 
      } 

      _holder.txtjobtitle.setText(worldpopulationlist.get(position).TITLE.trim()); 
      _holder.txtjobbudget.setText(worldpopulationlist.get(position).PRICE.trim()); 
      _holder.txtjobdesc.setVisibility(View.VISIBLE); 
      _holder.txtjobbudget.setVisibility(View.GONE); 
      _holder.txtjobdesc.setText(worldpopulationlist.get(position).DESC); 
      imageLoader.displayImage(worldpopulationlist.get(position).IMG1, _holder.imageviewjob, options); 
      _holder.txtlocation.setText(worldpopulationlist.get(position).LOCAT.trim()); 
      //convertView.setOnClickListener(new OnItemClickListner(position, worldpopulationlist.get(position))); 
      return convertView; 
     } 

     private class ViewHolder { 
      ImageView imageviewjob; 
      TextView txtjobtitle, txtjobdesc; 
      TextView txtlocation, txtjobbudget; 
     } 


     // Filter Class 
     public void filter(String charText) { 
      charText = charText.toLowerCase(Locale.getDefault()); 
      worldpopulationlist.clear(); 
      if (charText.length() == 0) { 
       worldpopulationlist.addAll(arraylist); 
      } else { 
       for (JobItem wp : arraylist) { 
        if (wp.TITLE.toLowerCase(Locale.getDefault()) 
          .contains(charText)) { 
         worldpopulationlist.add(wp); 
        } 
       } 
      } 
      notifyDataSetChanged(); 
     } 
    } 


} 

Antwort

0

Sie müssen nicht aktualisiert Informieren Sie Ihren ListView dass sich etwas verändert in es früher ist List durch den Aufruf notifyDataSetChanged() Methode des Adapters

auch sollten Sie nicht eine neue Instanz von ArrayList schaffen, sondern nur die alte Instanz löschen. Vergiss nicht, vor dem Löschen nach Null zu suchen.

0

versuchen, den Adapter erneut mit einem Null wie aufrufen.

setListAdapter() 
Verwandte Themen