Как установить видимость индикатора выполнения как невидимую, когда данные поступают с сервера и отображаются в виде списка? - PullRequest
0 голосов
/ 23 января 2020

Я хочу, чтобы индикатор выполнения отображался невидимым, когда данные поступают с моего сервера и отображаются в виде списка.

Вот мой код

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener,Response.ErrorListener, Response.Listener<JSONObject> {

    EditText movienameText;
    ProgressBar loading;
    Button getButton;
    ListView moviesList;
    ArrayAdapter< String > adapter;
    ArrayList< String > moviesname = new ArrayList < String > ();
    String x, plot, genre, year;
    RequestQueue queue;
    JsonObjectRequest request1,request2;


    @Override protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            movienameText = findViewById(R.id.movienameText);
            movienameText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
            getButton = findViewById(R.id.getButton);
            loading = findViewById(R.id.loading);
            moviesList=findViewById(R.id.moviesList);
            moviesList.setOnItemClickListener(this);
            adapter = new ArrayAdapter < String > (this, android.R.layout.simple_list_item_1,moviesname);

        }


    public void get(View view) {
        moviesname.clear();
        queue = Volley.newRequestQueue(this);
        String url1 = "http://www.omdbapi.com/?s="+movienameText.getText().toString().replace(" ","%20")+"&apikey=private";

        request1 = new JsonObjectRequest( Request.Method.GET, url1, null, this, this);
        queue.add(request1);
    }
    @Override public void onResponse(JSONObject response) {

        if (response.toString().contains("Search")) {
            try {

                for (int i = 0; i < response.getJSONArray("Search").length(); i++) {
                    if (i < response.getJSONArray("Search").length()) {
                         moviesname.add(response.getJSONArray("Search").getJSONObject(i).getString("Title"));

                    } else {
                        break;
                    }
                }

                moviesList.setAdapter(adapter);

            } catch (JSONException e) {
                Toast.makeText(this, "Error Occured, Try Again", Toast.LENGTH_SHORT).show();
                e.printStackTrace();
            }
        }
        else{
            try {
                genre = response.getString("Genre");
                plot = response.getString("Plot");
                year = response.getString("Year");
            } catch (JSONException e) {
                Toast.makeText(this, "Error Occured, Try Again", Toast.LENGTH_SHORT).show();
                e.printStackTrace();
            }


        }
    }
    @Override public void onErrorResponse(VolleyError error) {
        Toast.makeText(this, "Check Internet Connection", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String url2 = "http://www.omdbapi.com/?t="+moviesList.getItemAtPosition(position).toString().replace(" ","%20")+"&apikey=private";
        request2 = new JsonObjectRequest(Request.Method.GET, url2, null, this, this);
        queue.add(request2);
        Handler handler=new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setMessage("Release date: "+year+"\n"+"\n"+
                        "Genre: "+genre+"\n"+"\n"+
                        "Plot: "+plot).create().show();
            }
        },1000);



    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {

    }
}

xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/getButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="25dp"
        android:layout_marginEnd="7dp"
        android:layout_marginRight="7dp"
        android:onClick="get"
        android:text="Search"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/movienameText" />

    <EditText
        android:id="@+id/movienameText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="28dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:ems="10"
        android:hint="Type Movie Name"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.503"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/moviesList"
        android:layout_width="368dp"
        android:layout_height="342dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="14dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/getButton" />

    <ProgressBar
        android:id="@+id/loading"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="3dp"
        app:layout_constraintBottom_toBottomOf="@+id/moviesList"
        app:layout_constraintEnd_toEndOf="@+id/moviesList"
        app:layout_constraintStart_toStartOf="@+id/moviesList"
        app:layout_constraintTop_toTopOf="@+id/moviesList" />

</android.support.constraint.ConstraintLayout>

1 Ответ

1 голос
/ 23 января 2020

Вы можете сделать это в разделе onResponse вашего кода. Первый шаг - получить ссылку на ProgressView, которую вы сделали как loading = findViewById(R.id.loading), а затем установить видимость представления на View.GONE

. Когда ваш код находится в Java, используйте * 1008. *

view.setVisibility(View.GONE)

еще в Kotlin, используйте

view.visibility = View.GONE

В итоге ваш код должен выглядеть следующим образом:

@Override public void onResponse(JSONObject response) {

       //Hide the progress view
       loading.setVisibility(View.GONE)
    if (response.toString().contains("Search")) {
        try {

            for (int i = 0; i < response.getJSONArray("Search").length(); i++) {
                if (i < response.getJSONArray("Search").length()) {
            .............................
...