I have used checkbox for selecting the fields as in image below
I am getting json object as,
"painWorse":"Sitting,Standing,,,,Lying Down"
I need to parse and display as
Currently i am setting the text as:
viewHolder.painWorse.setText(assessObject.get("painWorse").toString().replace("\"", ""));
I need to skip the empty items and parse and display only the checked items.How to achieve this
Adapter code:
public class AssessmentAdapter extends RealmBasedRecyclerViewAdapter<Assessment, AssessmentAdapter.ViewHolder> {
Context mContext;
public AssessmentAdapter(
Context context,
RealmResults<Assessment> realmResults,
boolean automaticUpdate,
boolean animateIdType) {
super(context, realmResults, automaticUpdate, animateIdType);
mContext = context;
}
public class ViewHolder extends RealmViewHolder {
//
@BindView(R.id.visitDate)
TextView visitDate;
@BindView(R.id.Name)
TextView name;
@BindView(R.id.txtAge)
TextView age;
@BindView(R.id.txtSex)
TextView sex;
@BindView(R.id.problemBegin)
TextView problem;
@BindView(R.id.problem)
TextView problemBegin;
@BindView(R.id.morningRate)
TextView morningRate;
@BindView(R.id.afternoonRate)
TextView afternoonRate;
@BindView(R.id.eveningRate)
TextView eveningRate;
@BindView(R.id.assessmentDetails)
CardView assessmentDetails;
@BindView(R.id.painWorse)
TextView painWorse;
@BindView(R.id.currentCondition)
TextView currentCondition;
@BindView(R.id.diagnosticStudied)
TextView diagnosticStudied;
@BindView(R.id.medications)
TextView medications;
@BindView(R.id.history)
TextView history;
@BindView(R.id.goals)
TextView goals;
public ViewHolder(View container) {
super(container);
ButterKnife.bind(this, container);
}
}
@Override
public ViewHolder onCreateRealmViewHolder(ViewGroup viewGroup, int viewType) {
ViewHolder vh = null;
try {
View v = inflater.inflate(R.layout.assessment_card_view, viewGroup, false);
vh = new ViewHolder(v);
} catch (Exception e) {
Log.v(Constants.TAG, "onCreateRealmViewHolder Exception: " + e.toString());
}
return vh;
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onBindRealmViewHolder(ViewHolder viewHolder, int position) {
final Assessment assessment = realmResults.get(position);
try {
JsonParser parser = new JsonParser();
JsonArray assess = parser.parse(assessment.getAssesment().toString()).getAsJsonArray();
Log.v(Constants.TAG, "assessing" + assess);
JsonObject assessObject = assess.get(0).getAsJsonObject();
Log.v(Constants.TAG, "assessObject" + assessObject);
viewHolder.visitDate.setText(assessObject.get("Date").toString().replace("\"", ""));
viewHolder.name.setText(assessObject.get("Name").toString().replace("\"", ""));
viewHolder.age.setText(assessObject.get("Age").toString().replace("\"", ""));
viewHolder.sex.setText(assessObject.get("Sex").toString().replace("\"", ""));
viewHolder.problem.setText(assessObject.get("Problem").toString().replace("\"", ""));
viewHolder.problemBegin.setText(assessObject.get("ProblemBegin").toString().replace("\"", ""));
viewHolder.morningRate.setText(assessObject.get("morningRate").toString().replace("\"", ""));
viewHolder.afternoonRate.setText(assessObject.get("afternoonRate").toString().replace("\"", ""));
viewHolder.eveningRate.setText(assessObject.get("eveningRate").toString().replace("\"", ""));
viewHolder.painWorse.setText(assessObject.get("painWorse").toString().replace("\"", ""));
viewHolder.currentCondition.setText(assessObject.get("currentCondition").toString().replace("\"", ""));
viewHolder.diagnosticStudied.setText(assessObject.get("Diagnostic").toString().replace("\"", ""));
viewHolder.medications.setText(assessObject.get("Medications").toString().replace("\"", ""));
viewHolder.history.setText(assessObject.get("History").toString().replace("\"", ""));
viewHolder.goals.setText(assessObject.get("Goals").toString().replace("\"", ""));
viewHolder.assessmentDetails.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
} catch (Exception e) {
Log.v(Constants.TAG, "Exception: " + e.toString());
}
}
}
Without knowing anything else about your code I would say that you need to use a regex in order to remove those multiple commas
String pain = "Sitting,Standing,,,,Lying Down";
pain = pain.replaceAll(",+",","); // Replace every ocurrence of one or more commas with just one comma
// pain = "Sitting,Standing,Lying Down";
A clearer and easier way of formatting this info would be using a LinearLayout
dinamically filled with as much TextView
s as items. So once you can do the following:
painWorse
into a LinearLayout
with vertical orientationString[] items = pain.split(",");
Fill dinamically your newly LinearLayout
for (String item : items) {
TextView tv = new TextView(context);
tv.setText(item);
// any other styling here...
}