JSON из URL в ListView | Fragment
Добавлено: 15 апр 2017, 11:25
Здравствуйте! Есть фрагмент показывающий listView. Также есть локальный сайт (http://stat/api/main/) возвращающий Json-массив. Как парсить этот самый Json и показать его в ListView? (Также при клике надо передать элемент id в другой Fragment или Activity).
http://stat/api/main/
[syntax=javascript]{
"main": [
{
"id": "1",
"rus": "Демографические показатели",
"kaz": "Демографиялық көрсекіштер"
},
{
"id": "2",
"rus": "Социальное обеспечение",
"kaz": "Әлеуметтік қамсыздандыру"
},
{
"id": "3",
"rus": "Уровень жизни",
"kaz": "Тұрмыс деңгейі"
},
{
"id": "4",
"rus": "Занятость населения",
"kaz": "Халықтың жұмыспен қамтылуы"
},
{
"id": "5",
"rus": "Оплата труда",
"kaz": "Еңбекақы төлеу"
},
{
"id": "6",
"rus": "Цены",
"kaz": "Бағалар"
},
{
"id": "7",
"rus": "ВРП",
"kaz": "ЖӨӨ"
},
{
"id": "8",
"rus": "Реальный сектор экономики",
"kaz": "Экономиканың нақты секторы"
},
{
"id": "9",
"rus": "Торговля",
"kaz": "Сауда"
}
]
}[/syntax]
FragmentHome.java
[syntax=java]package loc.stat.statvko.fragments;
import android.app.ListFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import loc.stat.statvko.R;
public class FragmentHome extends ListFragment {
String data[] = new String[] {"123", "123", "123", "123"};
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayAdapter<?> adapter = new ArrayAdapter<Object>(getActivity(), android.R.layout.simple_list_item_1, data);
setListAdapter(adapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home, null);
}
}
[/syntax]
fragment_home.xml
[syntax=xml]
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="loc.stat.statvko.fragments.FragmentHome">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"/>
</LinearLayout>
[/syntax]
http://stat/api/main/
[syntax=javascript]{
"main": [
{
"id": "1",
"rus": "Демографические показатели",
"kaz": "Демографиялық көрсекіштер"
},
{
"id": "2",
"rus": "Социальное обеспечение",
"kaz": "Әлеуметтік қамсыздандыру"
},
{
"id": "3",
"rus": "Уровень жизни",
"kaz": "Тұрмыс деңгейі"
},
{
"id": "4",
"rus": "Занятость населения",
"kaz": "Халықтың жұмыспен қамтылуы"
},
{
"id": "5",
"rus": "Оплата труда",
"kaz": "Еңбекақы төлеу"
},
{
"id": "6",
"rus": "Цены",
"kaz": "Бағалар"
},
{
"id": "7",
"rus": "ВРП",
"kaz": "ЖӨӨ"
},
{
"id": "8",
"rus": "Реальный сектор экономики",
"kaz": "Экономиканың нақты секторы"
},
{
"id": "9",
"rus": "Торговля",
"kaz": "Сауда"
}
]
}[/syntax]
FragmentHome.java
[syntax=java]package loc.stat.statvko.fragments;
import android.app.ListFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import loc.stat.statvko.R;
public class FragmentHome extends ListFragment {
String data[] = new String[] {"123", "123", "123", "123"};
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayAdapter<?> adapter = new ArrayAdapter<Object>(getActivity(), android.R.layout.simple_list_item_1, data);
setListAdapter(adapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home, null);
}
}
[/syntax]
fragment_home.xml
[syntax=xml]
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="loc.stat.statvko.fragments.FragmentHome">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"/>
</LinearLayout>
[/syntax]