Как обновить данные в API с помощью Volley в Android?
Условие :
- Разбор JSON в Android с использованием библиотеки Volley
- Как опубликовать данные в API с помощью Volley в Android?
Мы видели чтение данных из API, а также отправку данных в нашу базу данных с помощью API. В этой статье мы рассмотрим обновление наших данных в нашем API. Мы будем использовать Volleylibrary для обновления наших данных в нашем API.
Что мы собираемся построить в этой статье?
Мы создадим простое приложение, в котором мы будем отображать простую форму, и с помощью этой формы мы будем обновлять наши данные и передавать их в наш API для обновления этих данных. Мы будем использовать запрос PUT вместе с библиотекой volley для обновления наших данных до API. Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье. Обратите внимание, что мы собираемся реализовать этот проект на языке Java .
Пошаговая реализация
Шаг 1: Создайте новый проект
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». Обратите внимание, что в качестве языка программирования выберите Java .
Шаг 2. Добавьте приведенную ниже зависимость в файл build.gradle.
Ниже приведена зависимость для Volley, которую мы будем использовать для получения данных из API. Чтобы добавить эту зависимость, перейдите в приложение > Gradle Scripts > build.gradle(app) и добавьте приведенную ниже зависимость в раздел зависимостей.
// below line is used for volley library
implementation ‘com.android.volley:volley:1.1.1’
После добавления этой зависимости синхронизируйте свой проект и теперь переходите к части AndroidManifest.xml.
Шаг 3. Добавление разрешений в Интернет в файле AndroidManifest.xml
Перейдите к приложению > AndroidManifest.xml и добавьте в него приведенный ниже код.
XML
< uses-permission android:name = "android.permission.INTERNET" /> |
Шаг 4: Работа с файлом activity_main.xml
Перейдите к приложению > res > layout > activity_main.xml и добавьте приведенный ниже код в этот файл. Ниже приведен код файла activity_main.xml .
XML
<? xml version = "1.0" encoding = "utf-8" ?> <!--in this we are displaying a nested scroll view--> < LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" tools:context = ".MainActivity" > <!--edit text for our user name--> < EditText android:id = "@+id/idEdtUserName" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginStart = "10dp" android:layout_marginTop = "30dp" android:layout_marginEnd = "10dp" android:hint = "User Name" /> <!--edit text for our job--> < EditText android:id = "@+id/idEdtJob" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "10dp" android:hint = "Job" /> <!--button to update our data--> < Button android:id = "@+id/idBtnUpdate" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "20dp" android:text = "Update Data" android:textAllCaps = "false" /> <!--progress bar for the purpose of loading--> < ProgressBar android:id = "@+id/idPBLoading" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "center" android:visibility = "gone" /> <!--text view to display our response after updating data--> < TextView android:id = "@+id/idTVResponse" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "10dp" android:gravity = "center_horizontal" android:text = "Response" android:textAlignment = "center" android:textColor = "@color/black" android:textSize = "15sp" /> </ LinearLayout > |
Шаг 5: Работа с файлом MainActivity.java
Перейдите к файлу MainActivity.java и обратитесь к следующему коду. Ниже приведен код файла MainActivity.java . Комментарии добавляются внутри кода, чтобы понять код более подробно.
Java
import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; public class MainActivity extends AppCompatActivity { // creating our variables for our views such as // text view, button and progress bar // and response text view. private EditText userNameEdt, jobEdt; private Button updateBtn; private ProgressBar loadingPB; private TextView responseTV; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); // initializing our views with their ids. userNameEdt = findViewById(R.id.idEdtUserName); jobEdt = findViewById(R.id.idEdtJob); updateBtn = findViewById(R.id.idBtnUpdate); loadingPB = findViewById(R.id.idPBLoading); responseTV = findViewById(R.id.idTVResponse); // adding on click listener for our button. updateBtn.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { // checking if the edit text is empty or not. if (TextUtils.isEmpty(userNameEdt.getText().toString()) && TextUtils.isEmpty(jobEdt.getText().toString())) { // displaying a toast message if the edit text is empty. Toast.makeText(MainActivity. this , "Please enter your data.." , Toast.LENGTH_SHORT).show(); return ; } // calling a method to update data in our API. callPUTDataMethod(userNameEdt.getText().toString(), jobEdt.getText().toString()); } }); } private void callPUTDataMethod(String name, String job) { // making our progress bar visible. loadingPB.setVisibility(View.VISIBLE); // url for updating our data // in below url 2 is the identity at which // we will be updating our data. // creating a new variable for our request queue RequestQueue queue = Volley.newRequestQueue(MainActivity. this ); // making a string request to update our data and // passing method as PUT. to update our data. StringRequest request = new StringRequest(Request.Method.PUT, url, new Response.Listener<String>() { @Override public void onResponse(String response) { // hiding our progress bar. loadingPB.setVisibility(View.GONE); // inside on response method we are // setting our edit text to empty. jobEdt.setText( "" ); userNameEdt.setText( "" ); // on below line we are displaying a toast message as data updated. Toast.makeText(MainActivity. this , "Data Updated.." , Toast.LENGTH_SHORT).show(); try { // on below line we are extracting data from our json object // and passing our response to our json object. JSONObject jsonObject = new JSONObject(response); // creating a string for our output. String output = jsonObject.getString( "name" ) + "
" + jsonObject.getString( "job" ) + "
" + jsonObject.getString( "updatedAt" ); // on below line we are setting // our string to our text view. responseTV.setText(output); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // displaying toast message on response failure. Toast.makeText(MainActivity. this , "Fail to update data.." , Toast.LENGTH_SHORT).show(); } }) { @Override protected Map<String, String> getParams() { // below line we are creating a map for storing // our values in key and value pair. Map<String, String> params = new HashMap<String, String>(); // on below line we are passing our key // and value pair to our parameters. params.put( "name" , name); params.put( "job" , job); // at last we are // returning our params. return params; } }; // below line is to make // a json object request. queue.add(request); } } |
Теперь запустите ваше приложение и посмотрите, что выдает приложение.