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>