Здравствуйте! Есть фрагмент показывающий 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]
JSON из URL в ListView | Fragment
- BreadPusher
- Сообщения: 1
- Зарегистрирован: 15 апр 2017, 11:10
Re: JSON из URL в ListView | Fragment
Вот так можно распарсить
А полученый массив данных "обворачиваешь" в ArrayAdapter и его уже стыкуешь с ListView
Код: Выделить всё
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MyActivity extends ActionBarActivity {
public static String LOG_TAG = "my_log";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new JSONParseTask().execute();
}
private class JSONParseTask extends AsyncTask<Void, Void, String> {
HttpURLConnection urlConnection = null;
BufferedReader reader = null;
String resultJson = "";
@Override
protected String doInBackground(Void... params) {
// получаем данные с внешнего сайта
try {
URL url = new URL("http://site.ru/output.json");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
StringBuffer buffer = new StringBuffer();
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
resultJson = buffer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return resultJson;
}
@Override
protected void onPostExecute(String strJson) {
super.onPostExecute(strJson);
JSONObject dataJsonObj = null;
String secondName = "";
try {
dataJsonObj = new JSONObject(strJson);
JSONArray jsonObjects = dataJsonObj.getJSONArray("JSONData-TAG");
for (int i = 0; i < jsonObjects.length(); i++) {
JSONObject jsonObject = jsonObjects.getJSONObject(i);
String user_name = jsonObject.getString("user_name");
Log.d(LOG_TAG, "user_name: " + user_name);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}