如何更改按钮在列表视图上的按钮文本?

时间:2017-07-18 12:17:18

标签: android

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上

1 个答案:

答案 0 :(得分:0)

ListView中更改smth的主要流程如下:

  • 将属性(在您的案例中为success)保留在您在适配器中使用的包装器模型中;
  • 在适配器内使用此属性以设置正确的样式;
  • 每次要更改数据时调整模型(设置正确条目的success字段);
  • 调用notifyDataSetChanged - 您的listView将以适当的状态和正确的状态重新绘制。

<强> BUT

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