handler和子线程不能给成员变量赋值,求解决办法,各位大神好心指点一下
分线程中用handler发消息(携带要改变的的成员变量值a),在主线程中接受消息(接受携带出来要赋值的值a),然后赋值给成员变量(把a值赋给成员变量就可以呀)
handler = new Handler() {
private String imgurl;
@Override
public void handleMessage(Message msg) {
if (msg.what == 2) {
String jsondata = (String) msg.obj;
try {
mapList = new ArrayList<>();
JSONObject jsonObject = new JSONObject(jsondata);
String warning = jsonObject.getString("message");
int errorcode = jsonObject.getInt("errorcode");
if (errorcode == 1) {
Toast.makeText(getContext(), warning, Toast.LENGTH_SHORT).show();
}
JSONArray array = jsonObject.getJSONArray("data");
for (int i = 0; i < array.length(); i++) {
HashMap<String, Object> hashMap = new HashMap<>();
JSONObject object = array.getJSONObject(i);
String originalPrice = String.valueOf(object.getDouble("originalPrice"));
String price = String.valueOf(object.getDouble("price"));
String title = object.getString("goodsName");
String goodsCode = object.getString("goodsCode");
hashMap.put("originalprice", originalPrice);
hashMap.put("price", price);
hashMap.put("title", title);
hashMap.put("goodsCode", goodsCode);
hashMap.put("imgurl", imgurl);
mapList.add(hashMap);
}
adapter = new XIangGuanAdapter(mapList, getContext());
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Product_details.goodsCode = (String) mapList.get(position).get("goodsCode");
getParentFragment().getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.fragment, new Product_details()).commit();
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
}
};
就是这个Handler在Fragment的oncreateview里面,然后我想把上面加黑的imgurl拿到外部赋值,然后再新建线程利用imgurl下载图片,这是我的思路