Как включить API Fetcher в ваше приложение для Android
Мы будем искать упоминание о https://rapidapi.com/blog/category/tutorial/
Если вы разработчик приложения, могут быть случаи, когда вы захотите включить веб-API для извлечения данных, чтобы предоставить их пользователям. Это не очень сложно, и это может быть сделано в XML или JSON. Итак, в этом руководстве мы покажем вам, как встроить простой инструмент для извлечения данных из веб-API в ваше приложение для Android.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Для этого урока мы будем использовать 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
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.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)