Как печатать извлеченные данные JSON в цикле на Android Textview

Я застрял здесь, где я хочу напечатать значение в Android, используя Textview. Но я получаю только последнюю строчку.
Здесь откликом является имя массива в кодировке JSON, которое я анализирую, и вся объявленная строка является атрибутом полученных данных, которые должны быть напечатаны в 4 текстовых представлениях с использованием линейного макета. Я беру данные из базы данных, используя PHP.

  TextView textView1 = (TextView)findViewById(R.id.ID);
TextView textView2 = (TextView)findViewById(R.id.Name);
TextView textView3 = (TextView)findViewById(R.id.Department);
TextView textView4 = (TextView)findViewById(R.id.Semester);

jsonArray = jsonObject.getJSONArray("response");
String ID, Name, Department, Semester;
int i = 0;
while (i < jsonArray.length()) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
ID = jsonObject1.getString("ID");
textView1.setText(ID);
Name = jsonObject1.getString("Name");
textView2.setText(Name);
Department = jsonObject1.getString("Department");
textView3.setText(Department);
Semester = jsonObject1.getString("Semester");
textView4.setText(Semester);
i++;
}

У меня есть пять строк (кортеж) данных, и я хочу напечатать каждую строку в новой строке. Итак, во всех пяти строках должно быть 4 значения атрибута. Есть ли способ сделать это без сохранения данных.

Изменить: я должен напечатать 4 атрибута для того, чтобы иметь все 5 кортежа (строки). Значит мне нужно всего (4 X 5 =) 20 просмотр текста.

-1

Решение

Проблема в том, что вы переопределяете содержание вашего textviews с каждой итерации.

Вы должны попытаться добавить его к настоящему тексту, например:

textview.setText(textview.getText() + "some string")

1

Другие решения

Вы пробовали метод PDO fetchAll. Этот метод в основном получает все строки из базы данных в соответствии с запросом в формате массива.

0

Если я вас правильно понимаю, вы хотите иметь 4×5 = 20 просмотров текста.

Если вы одобряете это, вы должны использовать просмотр списка или просмотрщик для достижения этой цели.

Вот пример того, как использовать Listview

0

Проблема в том, что вы зацикливаете свой jsonArray на textviews. На каждой итерации ваш textView получает значение, а на каждой новой итерации предыдущее значение вашего textView изменяется на новое значение jsonArray для следующего i-го индекса. Вы можете либо создать список textViews, либо создать представление переработчика, чтобы каждое новое значение jsonArray вставлялось и печаталось.

Обратитесь к этой ссылке, чтобы узнать о ListViews

0

У вас есть только 4 TextView здесь, но вы хотите напечатать 5 человек. Если вы хотите, чтобы они были добавлены в эти 4 textView в формате:

ID: 1 2 3 …

Имя: Джон Майк Персона3 …

Отдел: Math CS Eng ..

Семестр: 1 2 3 ..

ты сделаешь:

jsonArray = jsonObject.getJSONArray("response");
String ID, Name, Department, Semester;
int i = 0;
while (i < jsonArray.length()) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
ID = jsonObject1.getString("ID");
textView1.setText(textView1.getText().toString() + " "+ ID);
Name = jsonObject1.getString("Name");
textView2.setText(textView2.getText().toString() + " "+ Name);
Department = jsonObject1.getString("Department");
textView3.setText(textView3.getText().toString() + " "+ Department);
Semester = jsonObject1.getString("Semester");
textView4.setText(textView4.getText().toString() + " "+ Semester);
i++;
}

Ключ должен получить существующий текст:

 TextView textview1 = (TextView) findViewById(R.id.abbreviated);
String newText = jsonObject1.getString("Your_Field")
String oldText = textview1.getText().toString();
textview1.setText(oldText+ " " +newText);

Но если вы хотите список, который показывает каждого человека в отдельности, я рекомендую использовать RecyclerView :

  1. Создайте файл с именем list_item.xml в res / layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:card_view="http://schemas.android.com/apk/res-auto">

<TextView
android:id="@+id/id"android:layout_width="wrap_content"android:layout_height="wrap_content" />

<TextView
android:id="@+id/name"android:layout_width="wrap_content"android:layout_height="wrap_content" />

<TextView
android:id="@+id/department"android:layout_width="wrap_content"android:layout_height="wrap_content" />

<TextView
android:id="@+id/semester"android:layout_width="wrap_content"android:layout_height="wrap_content" />

</android.support.v7.widget.CardView>
</LinearLayout>
0

Спасибо за то, что вы так щедры. Я искал эту проблему и нашел решение, используя TableLayout, который выглядел лучше и проще для меня. Вот код, который я даю, который я использовал.

Мой код XML:

<HorizontalScrollView
android:id="@+id/hscrll1"android:layout_width="fill_parent"android:layout_height="wrap_content" >

<RelativeLayout
android:layout_width="match_parent"android:layout_height="match_parent">

<TableLayout
android:id="@+id/table"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_below="@+id/textView">
</TableLayout>

</RelativeLayout>

</HorizontalScrollView>

и мой код JAVA — то, где я создал TableRow, Textview заполнил свои данные и добавил это.

TableLayout tableLayout = (TableLayout)findViewById(R.id.table);
jsonArray = jsonObject.getJSONArray("response");
String ID, Name, Department, Semester;
int i = 0;
while (i < jsonArray.length()) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
ID = jsonObject1.getString("ID");
Name = jsonObject1.getString("Name");
Department = jsonObject1.getString("Department");
Semester = jsonObject1.getString("Semester");
i++;

TableRow tableRow1 = new TableRow(this);
TextView tv1 = new TextView(this);
tv1.setText(ID);
tv1.setTextColor(Color.RED);
tv1.setGravity(Gravity.CENTER);
tv1.setTextSize(20.0f);
tableRow1.addView(tv1);

TextView tv2 = new TextView(this);
tv2.setText(Name);
tv2.setTextColor(Color.WHITE);
tv2.setGravity(Gravity.CENTER);
tv2.setTextSize(20.0f);
tableRow1.addView(tv2);

TextView tv3 = new TextView(this);
tv3.setText(Department);
tv3.setTextColor(Color.WHITE);
tv3.setGravity(Gravity.CENTER);
tv3.setTextSize(20.0f);
tableRow1.addView(tv3);

TextView tv4 = new TextView(this);
tv4.setText(Semester);
tv4.setTextColor(Color.WHITE);
tv4.setGravity(Gravity.CENTER);
tv4.setTextSize(20.0f);
tableRow1.addView(tv4);
tableLayout.addView(tableRow1);
}
0
По вопросам рекламы [email protected]