在我的应用程序中,我的json响应中有一个布尔变量。
[
{
"id" : "001",
"firstName" : "Mark",
"lastName" : "Mason",
"role" : "CEO",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"teamName" : "iOS",
"members" : [
{
"id" : "002",
"firstName" : "Olly",
"lastName" : "Berry",
"role" : "iOS Team Lead",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png",
"teamLead" : true
},
{
"id" : "003",
"firstName" : "James",
"lastName" : "Frost",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "004",
"firstName" : "Liam",
"lastName" : "Nichols",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "005",
"firstName" : "Chris",
"lastName" : "Watson",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "006",
"firstName" : "Richard",
"lastName" : "Turton",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "007",
"firstName" : "Matt",
"lastName" : "Colliss",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "008",
"firstName" : "David",
"lastName" : "Gibson",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "009",
"firstName" : "Tom",
"lastName" : "Guy",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "010",
"firstName" : "Rich",
"lastName" : "Hodgkins",
"role" : "iOS Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
}
]
},
{
"teamName" : "Android",
"members" : [{
"id" : "011",
"firstName" : "David",
"lastName" : "Branton",
"role" : "Android Team Lead",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png",
"teamLead" : true
},
{
"id" : "012",
"firstName" : "Dre",
"lastName" : "Pilipczuk",
"role" : "Android Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "013",
"firstName" : "Ray",
"lastName" : "Britton",
"role" : "Android Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "014",
"firstName" : "Charly",
"lastName" : "Murillo",
"role" : "Android Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
}
]
},
{
"teamName" : "Web",
"members" : [{
"id" : "015",
"firstName" : "Ryan",
"lastName" : "French",
"role" : "Web Team Lead",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png",
"teamLead" : true
},
{
"id" : "016",
"firstName" : "James",
"lastName" : "Ward",
"role" : "Web Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "018",
"firstName" : "Adam",
"lastName" : "Smith",
"role" : "Web Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "019",
"firstName" : "Leonard",
"lastName" : "Da Costa",
"role" : "Web Developer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
}
]
},
{
"teamName" : "Design",
"members" : [{
"id" : "020",
"firstName" : "Hannah",
"lastName" : "Tempest",
"role" : "Design Team Lead",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png",
"teamLead" : true
},
{
"id" : "021",
"firstName" : "Ellis",
"lastName" : "Reed",
"role" : "Designer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "022",
"firstName" : "Pete",
"lastName" : "Horsham",
"role" : "Designer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "023",
"firstName" : "Hemel",
"lastName" : "Dave",
"role" : "Designer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
},
{
"id" : "024",
"firstName" : "Hannah",
"lastName" : "Corke",
"role" : "Designer",
"profileImageURL" : "http://developers.mub.lu/resources/profilePlaceholder.png"
}
]
}
]
@Override
public void onResponse(JSONArray response) {
Log.d("Theo", response.toString());
//I use i=1 to bypass the first JSON object which doesn't contain
the object member.
//If i set i=0,then I will get an exception.
for(int i = 1;i<response.length();i++){
try {
//Here I read the 4 objects.
JSONObject jsonObject = response.getJSONObject(i);
//I get the members array for JSON object
JSONArray teamMembersArray = jsonObject.getJSONArray("members");
for(int j=0;j<teamMembersArray.length();j++){
//The model class which contains the setters/getters
//in order to "deserialize" the JSON objects into string objects.
Model m = new Model();
JSONObject teamObject = teamMembersArray.getJSONObject(j);
//I am searching if the teamLead object exists.If yes
//then set it to true by reading it! If not then read
//the next members!
if (teamObject.has("teamLead") && teamObject.isNull("teamLead")) {
m.setTeamLead(teamObject.getBoolean("teamLead"));
}else {
m.setId(teamObject.getInt("id"));
m.setProfileImageURL(teamObject.getString("profileImageURL"));
m.setFirstName(teamObject.getString("firstName"));
m.setLastName(teamObject.getString("lastName"));
m.setRole(teamObject.getString("role"));
//Finally I am adding the string objects into an ArrayList.
modelArrayList.add(m);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
//modelArrayList.add(m);
// Update list by notifying the adapter of changes
myAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//hidePD();
}
});
AppController.getInstance().addToRequestQueue(jsObjRequest);
}
我使用在Model类中创建的setter方法读取它。到现在为止还挺好。 现在我想进入我的自定义适配器并执行,如果该json变量为true(teamLead),则更改所有相应团队负责人的文本颜色。
这是我的适配器代码。
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.RowHolderClass> {
private List<Model> modelList;
private Context mContext;
private int focused;
private ImageLoader mImageLoader;
public MyAdapter(Activity activity,List<Model> modelList) {
this.modelList = modelList;
this.mContext = activity;
}
@Override
public RowHolderClass onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_row,null);
final RowHolderClass holder = new RowHolderClass(v);
return holder;
}
@Override
public void onBindViewHolder(RowHolderClass holder, int position) {
final Model listItems = modelList.get(position);
holder.itemView.setSelected(focused==position);
holder.getLayoutPosition();
mImageLoader = AppController.getInstance().getImageLoader();
holder.imageView.setImageUrl(listItems.getProfileImageURL(),mImageLoader);
holder.fName.setText(Html.fromHtml(listItems.getFirstName()));
holder.lName.setText(Html.fromHtml(listItems.getLastName()));
holder.jobRole.setText(Html.fromHtml(listItems.getRole()));
holder.teamLeader.booleanValue();
//holder.fName.setTextColor(mContext.getResources().getColor(R.color.textColors));
holder.relativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String first_name = listItems.getFirstName();
String last_name = listItems.getLastName();
String job_role = listItems.getRole();
String image_url = listItems.getProfileImageURL();
String id= String.valueOf(listItems.getId());
Intent i = new Intent(mContext, NewActivity.class);
i.putExtra("firstName",first_name);
i.putExtra("lastName",last_name);
i.putExtra("jobRole",job_role);
i.putExtra("imageUrl",image_url);
i.putExtra("memberId",id);
mContext.startActivity(i);
}
});
}
@Override
public int getItemCount() {
return (null != modelList?modelList.size() :0 );
}
//ViewHolder algorithm used to read the data of the row fast.
class RowHolderClass extends RecyclerView.ViewHolder {
protected NetworkImageView imageView;
protected TextView fName, lName, jobRole;
protected RelativeLayout relativeLayout;
protected Boolean teamLeader;
public RowHolderClass(View itemView) {
super(itemView);
this.relativeLayout = (RelativeLayout) itemView.findViewById(R.id.recLayout);
this.imageView = (NetworkImageView) itemView.findViewById(R.id.imageView);
this.fName = (TextView) itemView.findViewById(R.id.firstName);
this.lName = (TextView) itemView.findViewById(R.id.lastName);
this.jobRole = (TextView) itemView.findViewById(R.id.roleView);
}
}
}
正如您所看到的,我获得了我想要的所有值并将其显示出来。但我不知道怎么说
if(teamLeader is true){
//then change the text colours of the corresponding team leaders.
}
谢谢,
西奥
答案 0 :(得分:2)
没有必要让它如此复杂。 Json还为我们提供了一个简单方法的选项。即,opt(optString(),optBoolean(),optJsonArray())而不是get(getString(),getBoolean(),getJsonArray())。这个选项的作用是,它会检查你的json字符串中是否存在给定的键。如果json字符串有键,它将返回值,否则它将为null(或)false为布尔值,默认情况下不会发生Json异常。这将减少不必要的if条件。在你的情况下,你已经检查了“teamLead”布尔对象是否存在,这可以很容易地实现,如下所示。
m.setTeamLead(teamObject.optBoolean("teamLead", false));
如果要使用if条件检查布尔值,可以按以下方式进行。
if (m.getTeamLead()) {
//True
} else {
//False
}
希望这有帮助。
答案 1 :(得分:1)
试试这个
if(modelList.getTeamLead())
{
// Change color
}
else
{
// Do not change
}
在api调用的其他部分添加此内容。
m.setTeamLead(false);
答案 2 :(得分:1)
使用..
if(listItems.getTeamLead())
{
//then change the text colours of the corresponding team leaders.
}
或
if(listItems.getTeamLead()==true)
{
//then change the text colours of the corresponding team leaders.
}
并输入默认值,并添加到modelArrayList.add(m); 在街区外
if (teamObject.has("teamLead") && (!teamObject.isNull("teamLead"))) {
m.setTeamLead(teamObject.getBoolean("teamLead"));
}else {
m.setTeamLead(false);
//DEFAULTVALUE
}
m.setId(teamObject.getInt("id"));
m.setProfileImageURL(teamObject.getString("profileImageURL"));
m.setFirstName(teamObject.getString("firstName"));
m.setLastName(teamObject.getString("lastName"));
m.setRole(teamObject.getString("role"));
//Finally I am adding the string objects into an ArrayList.
modelArrayList.add(m);
现在应该解决......
适配器
if(listItems.getTeamLead()){
//color
}else{
//default setcolor
}