Я пытаюсь создать список динамических c кнопок макета ограничения, которые обновляются каждый раз, когда пользователь изменяет текст внутри текста редактирования. Текст внутри текста редактирования будет использоваться в запросе залпа HTTP, который даст мне информацию о тексте кнопки. Причина, по которой я использую кнопку макета ограничения вместо обычной кнопки, заключается в том, что у меня много информации, настроенной так, что использование обычного текста кнопки было бы невозможным. Я уже собрал список кнопок макета Constraint, все что мне нужно сделать, это добавить их в основной макет и Constrain. Но у меня нет возможности добавить их в макет.
Вот соответствующий код:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
url = "https://financialmodelingprep.com/api/v3/search?query=" + searchEditText.getText().toString() + "&limit=10";
NetworkBridge.getInstance(getBaseContext()).addToRequestQueue(new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
ArrayList<SearchEntryInfo> searchedItemInfo = new ArrayList<SearchEntryInfo>();
ArrayList<ConstraintLayout> buttons = new ArrayList<ConstraintLayout>();
//float[] test = {0,0,0,0,0,0,0,0,0,0,0,0,0};
try {
for (int i = 0; i < response.length(); i++) {
searchedItemInfo.add(new SearchEntryInfo(response.getJSONObject(i).getString("symbol"), response.getJSONObject(i).getString("name"), response.getJSONObject(i).getString("currency"), response.getJSONObject(i).getString("stockExchange"), response.getJSONObject(i).getString("exchangeShortName")));
}
for(int i = 0; i < searchedItemInfo.size(); i++)
{
ConstraintLayout currentBtn = new ConstraintLayout(getBaseContext());
ConstraintSet currentBtnConsts = new ConstraintSet();
currentBtn.setId(View.generateViewId());
currentBtn.setMaxHeight(55);
currentBtn.setMinWidth(380);
TextView currentSym = new TextView(getBaseContext());
currentSym.setText(searchedItemInfo.get(i).getSymbol());
currentSym.setTextSize(20);
currentSym.setHeight(25);
currentSym.setWidth(85); //In Sp make use DP's eventually
currentSym.setTextColor(Color.BLACK);
currentSym.setTypeface(font);
currentSym.setId(View.generateViewId());
TextView currentName = new TextView(getBaseContext());
currentName.setText(searchedItemInfo.get(i).getName());
currentName.setTextSize(14);
currentName.setHeight(19);
currentName.setWidth(250);
currentName.setTextColor(0xE6E1E1);
currentName.setTypeface(font);
currentName.setId(View.generateViewId());
currentBtn.addView(currentSym);
currentBtn.addView(currentName);
//currentBtnConsts.clone(searchLayout);
currentBtnConsts.connect(currentSym.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT, 16);
currentBtnConsts.connect(currentSym.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 4);
currentBtnConsts.connect(currentName.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT, 16);
currentBtnConsts.connect(currentSym.getId(), ConstraintSet.TOP, currentSym.getId(), ConstraintSet.BOTTOM, 2);
currentBtnConsts.connect(currentSym.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 8);
currentBtnConsts.applyTo(currentBtn);
buttons.add(currentBtn);
}
/*int[] constButtonIds = new int[buttons.size()];
for(int i = 0; i < buttons.size(); i++)
{
constButtonIds[i] = buttons.get(i).getId();
}*/
ConstraintSet constMainSearchLayout = new ConstraintSet();
constMainSearchLayout.clone(searchLayout);
//constMainSearchLayout.createVerticalChain(constButtonIds[0], ConstraintSet.TOP, constButtonIds[constButtonIds.length -1], ConstraintSet.BOTTOM , constButtonIds, test, ConstraintSet.CHAIN_SPREAD);
constMainSearchLayout.applyTo(searchLayout);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO: Handle error
}
}));
}
Вот как это должно выглядеть, за исключением многих из тех вещей, которые изменяются динамически на основании того, что ответ дает мне. 