Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ListView vazia

Olá, estou procurando uma solução para o app que estou desenvolvendo, onde gostaria que, quando a listview estiver vazia, mostre a mensagem no lugar da listview. Assim segue o código da Activity e do layout respectivamente.

Activity

public class UserCarActivity extends AppCompatActivity {

    private ListView listCars;
    App_User app_user;
    Gson gson = new Gson();
    private String plaque;
    private Integer idCar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_car);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true); //Mostrar o botão
        getSupportActionBar().setHomeButtonEnabled(true);      //Ativar o botão
        getSupportActionBar().setTitle("Carros");         //Titulo para ser exibido na sua Action

        listCars = (ListView) findViewById(R.id.listViewCar);

        listCars.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Car car = (Car) parent.getItemAtPosition(position);

                Intent intentGoEditDeleteCar = new Intent(UserCarActivity.this, EditCarActivity.class);
                intentGoEditDeleteCar.putExtra("car", car);
                startActivity(intentGoEditDeleteCar);
            }
        });

        Button buttonAddCar = (Button) findViewById(R.id.buttonAddCard);
        buttonAddCar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentAddCar = new Intent(UserCarActivity.this, AddCarActivity.class);
                startActivity(intentAddCar);
            }
        });
        loadListCars();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) { //Botão adicional na Toolbar
        switch (item.getItemId()) {
            case android.R.id.home:
                Intent intentBack = new Intent(UserCarActivity.this, MainActivity.class);
                startActivity(intentBack);
                finish();
                break;
            default:break;
        }
        return true;
    }

    public void loadListCars(){

        String user = UtilWeb.RecoveryData("user", UserCarActivity.this);
        app_user = gson.fromJson(user, App_User.class);
        app_user.getId_App_User();

        new ListCar().execute(app_user);
    }

    private class ListCar extends AsyncTask<App_User, Void, String> {

        boolean isConnected = false;
        ProgressDialog progress;
        @Override
        protected void onPreExecute(){

            ConnectivityManager cm = (ConnectivityManager)UserCarActivity.this.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();

            if(isConnected) {
                progress = new ProgressDialog(UserCarActivity.this);
                progress.setMessage("Aguarde ...");
                progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                progress.setProgress(0);
                progress.show();
            }
            else{
                Toast.makeText(UserCarActivity.this, "Verifique a conexão com a internet...", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        protected String doInBackground(App_User... params) {
            try{
                Gson gson = new Gson();
                String cc = gson.toJson(params[0]);
                String result = HttpMetods.GET("Car/List/" + params[0].getId_App_User());
                return result;

            }catch (Exception e){
                return null;
            }
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            try {
                JSONObject object = new JSONObject(s);
                object.remove("type");

                if (isConnected) {
                    Gson gson = new Gson();
                    List<Car> cars = new ArrayList<>();
                    for (int i = 0; i < object.getJSONArray("lista").length(); i++){

                        String json = object.getJSONArray("lista").get(i).toString();
                        Car car = gson.fromJson(json, Car.class);
                        cars.add(car);
                    }
                    ArrayAdapter<Car> carAdapter = new CarAdapter(UserCarActivity.this, R.layout.activity_list_itens_user, cars);
                    listCars.setAdapter(carAdapter);
                }
            }catch (Exception e){
            }
            progress.dismiss();
        }
    }
}

Layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:background="#FFFFFFFF"
    tools:context="com.example.sirfilbido.dreamparkapp.main.car.UserCarActivity">

    <LinearLayout
        android:id="@+id/LL"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:orientation="vertical"
        android:layout_above="@+id/buttonAddCard"
        android:layout_alignStart="@+id/buttonAddCard">

        <ListView
            android:id="@+id/listViewCar"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            app:layout_constraintHorizontal_bias="0.666"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textViewCars" />

        <TextView
            android:id="@android:id/empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:lineSpacingExtra="12sp"
            android:text="Nenhum carro cadastrado"
            android:textAlignment="center"
            android:textSize="20sp" />

    </LinearLayout>

    <Button
        android:id="@+id/buttonAddCard"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:background="#00ff0000"
        android:text="@string/prompt_add_car"
        android:textAlignment="center"
        android:textColor="#375ca7"
        app:layout_constraintBottom_toTopOf="@+id/buttonOrders"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent" />

</RelativeLayout>
1 resposta
solução!

Oi Osmar, tudo bem ?

Algo que pode fazer é o seguinte, caso a lista esteja vazio você pode remover a listview da tela, todas as views tem uma propriedade chamada visibility, você pode definir que seu list view foi embora, usando o valor Gone, com isso, o seu textview seria exibido. Como seu listview usa o tamanho todo, quando ele for embora o TextView tem todo o espaço do pai para ele.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software