2015-11-03 54 views
0

是指在项目按一下按钮列表视图,这是我的主类:无法使用notfydatasetchange的Android

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


      prefs = getActivity().getSharedPreferences(AppConstants.LOGIN_PREFS, 
        Context.MODE_PRIVATE); 

      agentcode= prefs.getString(AppConstants.agentcode, ""); 


      listview = (ListView) rootView.findViewById(R.id.listView); 


      new LeadsBackground().execute(); 
      return rootView; 
     } 


     class LeadsBackground extends AsyncTask<Void, Void, Void> { 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(getActivity()); 
       pDialog.setTitle("Searching"); 
       pDialog.setMessage("Please wait..."); 
       pDialog.setCanceledOnTouchOutside(false); 
       pDialog.show(); 
       super.onPreExecute(); 
      } 

      @Override 
      protected Void doInBackground(Void... voids) { 

       try { 
        Response = JSONfunctions.getJSONfromURL(Constants.LeadsURl + "AgentCode=" + agentcode); 
        JSONArray _jsonarray = new JSONArray(Response); 

        for (int i = 0; i < _jsonarray.length(); i++) { 
         JSONObject _jsobject = _jsonarray.getJSONObject(i); 
         DataModel datamodel = new DataModel(); 
         datamodel.setJobNumber(_jsobject.getString("JobNumber")); 
         datamodel.setPhoneNumber(_jsobject.getString("PhoneNumber")); 
         datamodel.setCustomerName(_jsobject.getString("CustomerName")); 
         datamodel.setCustomerAddress(_jsobject.getString("CustomerAddress")); 
         datamodel.setCity(_jsobject.getString("City")); 
         datamodel.setPinCode(_jsobject.getString("PinCode")); 
         datamodel.setAppointmentDate(_jsobject.getString("AppointmentDate")); 
         datamodel.setAppointmentTime(_jsobject.getString("AppointmentTime")); 

         lstDataModel.add(datamodel); 

        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void aVoid) { 
       super.onPostExecute(aVoid); 


        ListViewAdapter  listviewadapter = new ListViewAdapter(getActivity(), R.layout.leadslistitem, 
         lstDataModel,agentcode); 
       listview.setAdapter(listviewadapter); 

       pDialog.dismiss(); 
      } 
     } 

这是我的适配器类:

public class ListViewAdapter extends ArrayAdapter<DataModel> { 
    // Declare Variables 
    Context context; 
    LayoutInflater inflater; 
    List<DataModel> datamodel; 

    String response; 
    ProgressDialog pDialog; 
    // LeadsFragment leads; 
    String agentcode; 

    public ListViewAdapter(Context context, int resourceId, 
          List<DataModel> worldpopulationlist, String agentcode) { 
     super(context, resourceId, worldpopulationlist); 

     this.context = context; 
     this.datamodel = worldpopulationlist; 

     this.agentcode = agentcode; 

     inflater = LayoutInflater.from(context); 


    } 


    private class ViewHolder { 
     TextView JobNumberTextView; 
     TextView PhoneNumberTextView; 
     TextView NameTextView; 
     TextView AdressTextView; 
     TextView DateTextView; 

     ImageView acceptedbutton; 
     ImageView rejectedbutton; 

    } 

    @Override 
    public void notifyDataSetChanged() { 
     super.notifyDataSetChanged(); 
    } 

    public View getView(final int position, View view, ViewGroup parent) { 
     final ViewHolder holder; 
     if (view == null) { 
      holder = new ViewHolder(); 
      view = inflater.inflate(R.layout.leadslistitem, null); 
      // 
      holder.JobNumberTextView = (TextView) view.findViewById(R.id.textView1); 

      holder.PhoneNumberTextView = (TextView) view.findViewById(R.id.textView); 

      holder.NameTextView = (TextView) view.findViewById(R.id.textView3); 
      holder.AdressTextView = (TextView) view.findViewById(R.id.textView2); 

      holder.DateTextView = (TextView) view.findViewById(R.id.textView7); 
      holder.acceptedbutton = (ImageView) view.findViewById(R.id.imageButton2); 

      holder.rejectedbutton = (ImageView) view.findViewById(R.id.imageButton); 


      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     } 


//  Html.fromHtml("<b>Job No:</b> ") 
     String sourceString = "<b>" + "JobNo:" + "</b> "; 

     holder.JobNumberTextView.setText(Html.fromHtml(sourceString) + datamodel.get(position).getJobNumber()); 
     holder.PhoneNumberTextView.setText(datamodel.get(position).getPhoneNumber()); 
     holder.NameTextView.setText(Html.fromHtml("Name : ") + datamodel.get(position).getCustomerName()); 
     holder.AdressTextView.setText(datamodel.get(position).getCustomerAddress() + "," + datamodel.get(position).getCity() + 
       "-" + datamodel.get(position).getPinCode()); 


     holder.DateTextView.setText(String.valueOf(Funcations.ConvertDatetime(datamodel.get(position).getAppointmentDate(), datamodel.get(position).getAppointmentTime())) 

     ); 


     // Capture position and set to the TextViews 

     holder.acceptedbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       new AccepteRejectBackground().execute(datamodel.get(position).getJobNumber(), "true"); 

       sendBroadcaset(true); 
      } 

     }); 


     holder.rejectedbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


       new AccepteRejectBackground().execute(datamodel.get(position).getJobNumber(), "false"); 
       sendBroadcaset(true); 
      } 
     }); 


     return view; 
    } 


    class AccepteRejectBackground extends AsyncTask<String, String, Void> { 

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

      pDialog = new ProgressDialog(context); 
      pDialog.setTitle("Searching"); 
      pDialog.setMessage("Please wait..."); 
      pDialog.setCanceledOnTouchOutside(false); 
      pDialog.show(); 
      super.onPreExecute(); 

     } 

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

      response = HttpUtil.doGet(Constants.AcceptrejectURl + "AgentCode=" + agentcode + "&Jobid=" + strings[0] + "&response=" + strings[1]); 

      String url = Constants.AcceptrejectURl + "AgentCode=" + agentcode + "&Jobid=" + strings[0] + "&response=" + strings[1]; 

      Log.e("Response", response); 

      return null; 
     } 


     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      if (response.equalsIgnoreCase("1\n") || response.equals("1")) { 
       Toast.makeText(context, "OK", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(context, "NOt OK", Toast.LENGTH_LONG).show(); 
      } 
      pDialog.dismiss(); 
     } 


    } 


    private void sendBroadcaset(boolean b) { 
     // TODO Auto-generated method stub 
     LocalBroadcastManager.getInstance(context).sendBroadcast(
       new Intent("update_boolean_variable").putExtra("action", b)); 
    } 


} 

我有两个按钮,接受和拒绝按钮,我想要刷新或更新列表视图按钮单击但我列表视图不更新,而我尝试使用notifydataset更改但无法刷新,而我从服务器获取数据从JSON格式接受按钮和拒绝按钮我必须发送参数true false并分别刷新listview请帮助我如何做到这一点

+0

我希望你知道的。 “” (句号)和“,”(逗号),不是吗? ,2分是不值得编辑这个职位:-) – droidev

回答

1

对于从适配器刷新列表视图,你需要调用notifyDatasetChanged()。但以这种方式。

AdapterClassName.this.notifyDatasetChanged(); 

为你的类

ListViewAdapter.this.notifyDatasetChanged(); 
+0

我们必须在适配器类调用这个coz每个按钮点击适配器 –