Как включить API Fetcher в ваше приложение для Android

Мы будем искать упоминание о https://rapidapi.com/blog/category/tutorial/

Если вы разработчик приложения, могут быть случаи, когда вы захотите включить веб-API для извлечения данных, чтобы предоставить их пользователям. Это не очень сложно, и это может быть сделано в XML или JSON. Итак, в этом руководстве мы покажем вам, как встроить простой инструмент для извлечения данных из веб-API в ваше приложение для Android.

Для этого урока мы будем использовать JSON, а не XML.

Написание кода в JSON

Сначала создайте новый XML-файл представления списка со следующим кодом:




Затем создайте новый файл XML, и здесь вы увидите список элементов, которые вы хотите показать (ImageView, TextView и т. Д.)



Чтобы получить данные из API, нам нужно перейти к основному действию, и нам нужно использовать AsyncTask, поскольку выборка API невозможна в главном потоке. AsyncTask — это просто поток, который выполняет фоновые процессы, показывая результаты в пользовательском интерфейсе. Использование основного потока для сетевых процессов обычно приводит к сбою приложения. Если это звучит немного запутанно, проверьте некоторые глубоко API учебники на RapidAPI.

Класс DownloadFilesTask расширяет AsyncTask < Void, Void, String >
{
закрытое диалоговое окно ProgressDialog = new ProgressDialog (MainActivity.this);
@Override
защищенный void onPreExecute ()
{
super.onPreExecute ();
this.dialog.setMessage («Вход в систему …»);
this.dialog.show ();
}
@Override
Защищенная строка doInBackground (Void … params)
{
ServiceHandler sh = новый ServiceHandler ();
String jsonStr = sh.makeServiceCall («http://jsonplaceholder.typicode.com/albums/», ServiceHandler.GET);
Log.d («res1», jsonStr);
вернуть jsonStr;

}
@Override
Защищенный void onPostExecute (строковый ответ)
{
super.onPostExecute (ответ);
Log.d («res2», ответ);
dialog.dismiss ();
если (ответ! = ноль)
{
пытаться
{

JSONArray arr = new JSONArray (ответ);
DataModel mDatModel = new DataModel ();
for (int i = 0; i id_array = новый ArrayList < String > ();

ArrayList < String > note_array = новый ArrayList < String > ();

Кнопка b1;

ListView l;

приватная финальная статическая строка SERVICE_URI = «http://jsonplaceholder.typicode.com/albums/»;

private static final String TAG_QUESTIONS = «Вопросы»;

приватная статическая final String USER_ID = «userId»;

приватная статическая final String ID = «id»;

приватная статическая final String TITLE = «title»;

JSONArray questions = null;

Защищенный void onSaveInstanceState (Bundle outState)

{

super.onSaveInstanceState (outState);

}

Защищенный void onRestoreInstanceState (BundlevedInstanceState)

{

super.onRestoreInstanceState (savedInstanceState);

}

@Override

Защищенный void onCreate (BundlevedInstanceState)

{

super.onCreate (savedInstanceState);

setContentView (R.layout.activity_main);

l = (ListView) findViewById (R.id.list);

новый DownloadFilesTask (). execute ();

l.setOnItemClickListener (новый AdapterView.OnItemClickListener ()

{

@Override

public void onItemClick (AdapterView < ? > родитель, просмотр вида, позиция int, длинный идентификатор)

{

String abc = id_array.get (position);

Toast.makeText (getBaseContext (), id_array.get (position), Toast.LENGTH_LONG) .show ();

Intent n = new Intent (MainActivity.this, Titleshow.class);

n.putExtra («id», id_array.get (position));

startActivity (п);

}

});

}

@Override

public void onItemClick (AdapterView < ? > родитель, просмотр вида, позиция int, длинный идентификатор)

{}

Вы найдете ответ в своей основной деятельности

ServiceHandler sh = новый ServiceHandler ();

String jsonStr = sh.makeServiceCall («http://jsonplaceholder.typicode.com/albums/», ServiceHandler.GET);

это не что иное, как класс дескриптора службы для запроса и получения разрешения от веб-API, поэтому мы будем делать все это из веб-API.

ServiceHandler.java

класс ServiceHandler

{

static String response = null;

public final static int GET = 1;

public final static int POST = 2;

public ServiceHandler ()

{}

/ **

* Делать сервисный звонок

*

* @url — URL, чтобы сделать запрос

* @method — http запрос метода

* /

public String makeServiceCall (String url, метод int)

{

return this.makeServiceCall (url, method, null);

}

/ **

* Делать сервисный звонок

*

* @url — URL, чтобы сделать запрос

* @method — http запрос метода

* @params — параметры http запроса

* /

public String makeServiceCall (String url, метод int, Список < NameValuePair > Титулы)

{

пытаться

{

// http клиент

DefaultHttpClient httpClient = new DefaultHttpClient ();

HttpEntity httpEntity = null;

HttpResponse httpResponse = null;

// Проверка типа метода http-запроса

if (method == POST)

{

HttpPost httpPost = новый HttpPost (url);

// добавление параметров сообщения

if (params! = null)

{

httpPost.setEntity (новый UrlEncodedFormEntity (params));

}

httpResponse = httpClient.execute (httpPost);

}

еще если (метод == GET)

{

// добавление параметров в URL

if (params! = null)

{

String paramString = URLEncodedUtils.format (params, «utf-8»);

url + = «?» + paramString;

}

HttpGet httpGet = new HttpGet (url);

httpResponse = httpClient.execute (httpGet);

}

httpEntity = httpResponse.getEntity ();

response = EntityUtils.toString (httpEntity);

}

catch (UnsupportedEncodingException e)

{

e.printStackTrace ();

}

catch (ClientProtocolException e)

{

e.printStackTrace ();

}

поймать (IOException e)

{

e.printStackTrace ();

}

обратный ответ;

}

}

Далее в вашей asyncTask вы найдете класс Adapter, который установит метод адаптера, но для этого нам нужно создать собственный адаптер.

открытый класс AAdapter расширяет BaseAdapter

{

частная деятельность;

// private ArrayList > данные;

приватный статический заголовок ArrayList;

приватная статическая LayoutInflater inflater = null;

public AAdapter (Деятельность a, ArrayList b)

{

активность = а;

this.title = b;

inflater = (LayoutInflater) activity.getSystemService (Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount ()

{

вернуть title.size ();

}

публичный объект getItem (int position)

{

возврат позиции;

}

public long getItemId (int position)

{

возврат позиции;

}

Публичный вид getView (int position, View convertView, ViewGroup parent)

{

Вид vi = convertView;

if (convertView == null) vi = inflater.inflate (R.layout.abcd, null);

TextView title2 = (TextView) vi.findViewById (R.id.txt_ttlsm_row); // заглавие

String song = title.get (position) .toString ();

title2.setText (песня);

TextView title22 = (TextView) vi.findViewById (R.id.txt_ttlcontact_row2); // уведомление

String song2 = title.get (position) .toString ();

title22.setText (song2);

возврат vi;

}

}

Мы должны помнить, что класс адаптера считается абстрактным классом в Android, поэтому нам нужно реализовать все методы. В приведенном ниже коде метод getview важен, потому что мы добавим больше кода для отображения второго XML-файла.

inflater = (LayoutInflater) activity.getSystemService (Context.LAYOUT_INFLATER_SERVICE);

Нам также понадобится класс Adapter для загрузки изображений, чтобы средство извлечения API могло загружать изображения из Интернета.

Открытый класс MyAdapter расширяет BaseAdapter

{

ImageLoader imageLoader;

закрытый контекст ctx;

ArrayList < AlbumData > список;

public MyAdapter (Context ctx, ArrayList < AlbumData > mDataList)

{

list = mDataList;

this.ctx = ctx;

}

public int getCount ()

{

возврат list.size ();

}

публичный объект getItem (int position)

{

возврат позиции;

}

public long getItemId (int position)

{

возврат позиции;

}

Публичный вид getView (int position, View convertView, ViewGroup parent)

{

// Просмотр vi = convertView;

ViewHolder viewHolder;

if (convertView == null)

{

LayoutInflater vi = (LayoutInflater) ctx.getSystemService (Context.LAYOUT_INFLATER_SERVICE);

convertView = vi.inflate (R.layout.abcde, null);

viewHolder = new ViewHolder ();

viewHolder.imageView = (ImageView) convertView.findViewById (R.id.image);

viewHolder.textView = (TextView) convertView.findViewById (R.id.txt_ttlsm_row);

convertView.setTag (viewHolder);

}

еще

{

viewHolder = (ViewHolder) convertView.getTag ();

}

Данные AlbumData = list.get (позиция);

String a = data.getThumbnailUrl ();

если (данные! = ноль)

{

viewHolder.textView.setText (data.getTitle ());

Строка url = a;

. Glide.with (CTX) .load (URL) .centerCrop () заполнитель (R.drawable.abhi) .crossFade () в (viewHolder.imageView).

/ * Picasso.with (ctx)

.load (»https://keenthemes.com/preview/conquer/assets/plugins/jcrop/demos/demo_files/image2.jpg«)

.into (viewHolder.imageView); * /

/ * ImageLoader imageLoader = ImageLoader.getInstance ();

imageLoader.displayImage («http://www.keenthemes.com/preview/conquer/assets/plugins/jcrop/demos/demo_files/image1.jpg», viewHolder.imageView); * /

}

return convertView;

}

открытый класс ViewHolder

{

ImageView imageView;

TextView textView;

}

Мы добавили комментарий кода, который на самом деле просто предложение для Пикассо загрузчик изображений— мощный загрузчик изображений с открытым исходным кодом и библиотека для кэширования для Android, и он занимает небольшое место в вашем приложении. Однако вы также можете использовать загрузчик изображений Glide для дополнительной настройки, так как он предлагает поддержку GIF и лучшее управление памятью.

открытый класс ViewHolder

{

ImageView imageView;

TextView textView;

}

Класс держателя представления создает статический экземпляр ViewHolder, а затем присоединяет его к элементу представления при первой загрузке. Затем он будет извлечен из тега просмотра в будущих вызовах.

Метод getView () часто вызывается, например, когда в ListView много элементов. Поэтому мы реализуем класс модели данных для метода set и get, который поможет вам получить элемент списка массивов и просто упростит вашу жизнь в будущем.

открытый класс AlbumData

{

int albumId;

int id;

Название строки;

URL-адрес строки;

String thumbnailUrl;

public int getAlbumId ()

{

возвратите идентификатор альбома;

}

public void setAlbumId (int albumId)

{

this.albumId = albumId;

}

public int getId ()

{

вернуть идентификатор;

}

public void setId (int id)

{

this.id = id;

}

public String getTitle ()

{

вернуть заголовок;

}

public void setTitle (название строки)

{

this.title = title;

}

public String getUrl ()

{

возврат URL;

}

public void setUrl (String url)

{

this.url = url;

}

public String getThumbnailUrl ()

{

return thumbnailUrl;

}

public void setThumbnailUrl (String thumbnailUrl)

{

this.thumbnailUrl = thumbnailUrl;

}

}

Это все, что вам нужно на данный момент. Вы можете проверить вывод этого средства извлечения API в эмуляторе приложения, таком как BlueStacks.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.