Выполните итерацию массива JSON и используйте значение Name для идентификации TextView Android - PullRequest
0 голосов
/ 18 апреля 2020

Я застрял. Я получаю JSON строку с сервера. Я загружаю это в массив JSON, называемый allTheArray. Теперь я хочу перебрать массив и вытащить пары имя / значение. Это я могу сделать. Для каждого имени в массиве у меня есть соответствующий TextView в моем макете. Для удобства запоминания! Теперь я хочу перебрать массив и разместить правильное значение в правильном TextView. псевдокод.

For I =0 to length
Name is get name from allTheArray
Value is get value from allTheArray
TextViewWithTheAboveName.setText=Value
Next

Возможно ли это? В PHP вы можете использовать переменную $$ name et c. Я не могу обойти это. Любые предложения, пожалуйста.

button_clearWCC.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String TAG ="JSONWALK";
                Toast.makeText(MainActivity.this, "Loading all fields", Toast.LENGTH_LONG).show();
                for(int i = 0; i<allTheArray.names().length(); i++){
                    try {
                        String key=allTheArray.names().getString(i);
                        String value = allTheArray.getString(key);
//the key string is the name of the TextView
//I know I have just set the key to be a string but is there anyway I can use that to define which //TextView I change.
                        key.setText(value)

                        Log.i(TAG, "key = " + key + " value = " + value);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }
        });

1 Ответ

0 голосов
/ 18 апреля 2020

Так вот, как я решил это ... понятия не имею о накладных расходах или эффективности, но это сработало для меня. Эффективно получить идентификатор TextView, используя ключ. Затем создайте TextView t для этого идентификатора, а затем используйте его для очистки ячейки или добавления значения в ячейку. Это может иметь последствия в других местах, но пока их не найдено.

button_clearWCC.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String TAG ="JSONWALK";
                Toast.makeText(MainActivity.this, "Clearing all fields", Toast.LENGTH_LONG).show();
                for(int i = 0; i<allTheArray.names().length(); i++){
                    try {
                        String key=allTheArray.names().getString(i);
                        String value = allTheArray.getString(key);
//this bit solved it
                        int id = getResources().getIdentifier(key, "id", getBaseContext().getPackageName());
                        TextView t = (TextView) findViewById(id);
                        t.setText("");
//end of this bit solved it
                        Log.i(TAG, "key = " + key + " value = " + value);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...