-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(文本);但它不更新。感謝提前!
什麼是你的問題? –
上面的代碼不起作用:-(..它不是更新textview(upvote) –
你在代碼中有一個問題,因爲'holder'和'myHolder'是2個不同的對象,當你在這個方法中使用'holder'時。 – Eselfar