2017-08-09 26 views
-1

我想在自己點擊時重新啓用recyclerview子項目。它從服務器獲取數據並自行更新它。請爲這種情況提供任何解決方案。在這裏我已經嘗試了,但我知道它沒有更新。如何將setText()應用於RecyclerView中的onclicked項目android

 myHolder.upvote.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(final View v) { 
     SQLiteHandler db = new SQLiteHandler(context); 
     HashMap<String, String> user = db.getUserDetails(); 
     String tag_string_req = "req_login"; 
     final String uid = user.get("uid"); 
     Log.d("hello", uid); 
     StringRequest strReq = new StringRequest(Request.Method.POST, 
       AppConfig.Upvote, new Response.Listener<String>() { 

      @RequiresApi(api = Build.VERSION_CODES.KITKAT) 
      @Override 
      public void onResponse(String response) { 

       try { 

        JSONObject jObj = new JSONObject(response); 
        boolean error = jObj.getBoolean("error"); 
        if (!error) { 
         String upvote_no = jObj.getString("upcount"); 
         String text = "Upvoted " + upvote_no; 
         ((TextView) v).setText(text); 
         //Log.d("resp", upvote); 
        } else { 
         // Error in login. Get the error message 
         String errorMsg = jObj.getString("error_msg"); 
         Toast.makeText(context, 
           errorMsg, Toast.LENGTH_LONG).show(); 
        } 
       } catch (JSONException e) { 
        // JSON error 
        e.printStackTrace(); 
        Toast.makeText(context, "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
       } 

      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Login Error: " + error.getMessage()); 
       Toast.makeText(context, 
         error.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }) { 

      @Override 
      protected Map<String, String> getParams() { 
       // Posting parameters to login url 
       Map<String, String> params = new HashMap<>(); 
       params.put("qries_user_id", uid); 
       params.put("qries_answer_id", answered_id); 

       return params; 
      } 

     }; 

     // Adding request to request queue 

     AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 
    } 
}); 

在上面的代碼我試圖採取從JSON響應,並更新到自己的孩子項目作爲((TextView的)V).setText(文本);但它不更新。感謝提前!

+0

什麼是你的問題? –

+0

上面的代碼不起作用:-(..它不是更新textview(upvote) –

+1

你在代碼中有一個問題,因爲'holder'和'myHolder'是2個不同的對象,當你在這個方法中使用'holder'時。 – Eselfar

回答

2

嘗試投你點擊視圖中的TextView

 myHolder.upvote.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ((TextView) v).setText("something"); 
     } 
    }); 
+0

我已更新問題,請檢查它 –

相關問題