2017-07-18 104 views
0
private void shortlist(){ 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String> () { 
     @Override 
     public void onResponse(String response) { 
      Log.e("short response-------",response); 
      if(response.equalsIgnoreCase("success")) { 
       btnSort.setBackgroundColor(Color.parseColor("#FF307668")); 
       btnSort.setText("shortlisted"); 
       btnSort.setEnabled(false); 
      } 
      Toast.makeText(getContext(),matri_id_to, Toast.LENGTH_LONG).show(); 
     } 
    }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(getContext(), error.toString(), Toast.LENGTH_LONG).show(); 
       } 
      }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put(KEY_MATRI_ID_BY,matri_id_by); 
      params.put(KEY_MATRI_ID_TO,matri_id_to); 
      return params; 
     } 
    }; 
    RequestQueue requestQueue = Volley.newRequestQueue(getContext()); 
    requestQueue.add(stringRequest); 
} 

在这段代码中我们要改变按钮的文本和色彩时,响应成功,否则文字或颜色会同样喜欢压前,但按钮上的ListView如何更改按钮在列表视图中的按钮文本?

+0

向我们展示'Log.e(“short response -------”,response)的输出;' –

+0

当你执行'onSuccess()'的代码时发生了什么。 –

+0

当我点击按钮响应成功,但文本没有改变 –

回答

0

主要流向改变不便在ListView外观例如:

  • 将属性(您的案例中的success)保留在您在适配器中使用的包装器模型中;
  • 在你的适配器里使用这个属性来设置正确的样式;
  • 调整模型每次你想改变数据(设置success字段的正确入口);
  • 致电notifyDataSetChanged - 您的listView将被重新绘制,具有正确的状态和适当的状态。

我真的建议你使用RecyclerView而不是ListView控件。流程几乎相同,但您可以拨打notifyItemChanged仅调整一个条目(您的按钮)。

+0

如果我使用RecyclerView,所以有ViewHolder。在此帮助下,我们可以更改文字或颜色。 –

+0

@VKSGODIYAL如果使用listView而不是recyclerView,则应该使用ViewHolder,因为它比调用'expensive'findViewById更有效。 Viewholder只是保存对已经找到的视图的引用。 – dilix

+0

即使您不使用ViewHolder,解决方案与我在此答案中建议的方法相同。您应该在getView方法中调整样式。 – dilix