我有一个json数组,jsonArray
,如:
[{
"phone_number": "+123456",
"name": "Bob"
},
{
"phone_number": "+234567",
"name": "Tom"
},
{
"phone_number": "+345678",
"name": "Jim"
},
{
"phone_number": "+4567890",
"name": "Jane"
},
{
"phone_number": "+5678901",
"name": "Sally"
}
]
在我的onBindViewHolder
我想检查phone_number
中的json array
值与username
是否匹配,然后是否匹配viewHolder.phone_user_name
文本到json数组的"name"
中的相应值。
但我在每个单元格的recyclerView
中获得的只是user : (blank)
这是我到目前为止所尝试的内容:
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {
SharedReview r = the_Shared_reviews.get(position);
//username is in fact a phone number from the db
String username = r.getUsername();
String phone_user_name = "";
int matching = jsonArray.length();
for (int i = 0; i < matching; i++) {
try {
JSONObject object = jsonArray.getJSONObject(i);
if (object.getString("phone_number").contains(username))
{
phone_user_name = (object.getString("name"));
}
} catch (JSONException e) {
Log.e("MYAPP", "unexpected JSON exception", e);
// Do something to recover ... or kill the app.
}
}
//I want to set the text to Bob, Tom, or whatever corresponding
// phone number matches username
((ReviewHolder) viewHolder).phone_user_name.setText("user :" + phone_user_name);
}
答案 0 :(得分:0)
您应该创建一个对象列表(电话号码,名称)并将其绑定到回收站视图。在“onBindViewHolder()”中,您可以从列表中找到包含这两个字段的相应对象。
答案 1 :(得分:0)
我不确定在username变量下的SharedReview类中应该有什么值,但是我假设它是一个名字,而不是一个数字。
但是,您正在测试名为&#34; phone_number&#34;的json数组项,在您的示例中是实际电话号码,是否包含用户名。这绝对是一个名字。
你应该替换:
if (object.getString("phone_number").contains(username))
{
phone_user_name = (object.getString("name"));
}
使用:
if (object.getString("name").equals(username))
{
phone_user_name = (object.getString("name"));
}