diff --git a/app/src/main/java/org/fdroid/fdroid/views/installed/InstalledAppsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/installed/InstalledAppsActivity.java index 6f051dd6d..c459bbffc 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/installed/InstalledAppsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/installed/InstalledAppsActivity.java @@ -32,6 +32,7 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; @@ -43,6 +44,8 @@ import org.fdroid.fdroid.views.apps.AppListItemController; public class InstalledAppsActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks { private InstalledAppListAdapter adapter; + private RecyclerView appList; + private TextView emptyState; @Override protected void onCreate(Bundle savedInstanceState) { @@ -59,10 +62,12 @@ public class InstalledAppsActivity extends AppCompatActivity implements LoaderMa adapter = new InstalledAppListAdapter(this); - RecyclerView appList = (RecyclerView) findViewById(R.id.app_list); + appList = (RecyclerView) findViewById(R.id.app_list); appList.setHasFixedSize(true); appList.setLayoutManager(new LinearLayoutManager(this)); appList.setAdapter(adapter); + + emptyState = (TextView) findViewById(R.id.empty_state); } @Override @@ -85,6 +90,14 @@ public class InstalledAppsActivity extends AppCompatActivity implements LoaderMa @Override public void onLoadFinished(Loader loader, Cursor cursor) { adapter.setApps(cursor); + + if (adapter.getItemCount() == 0) { + appList.setVisibility(View.GONE); + emptyState.setVisibility(View.VISIBLE); + } else { + appList.setVisibility(View.VISIBLE); + emptyState.setVisibility(View.GONE); + } } @Override diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java index 50d287bfe..6b5a8bc24 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java @@ -5,22 +5,28 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.FrameLayout; +import android.widget.TextView; import org.fdroid.fdroid.R; public class UpdatesViewBinder { private final UpdatesAdapter adapter; + private final RecyclerView list; + private final TextView emptyState; public UpdatesViewBinder(AppCompatActivity activity, FrameLayout parent) { View view = activity.getLayoutInflater().inflate(R.layout.main_tab_updates, parent, true); adapter = new UpdatesAdapter(activity); + adapter.registerAdapterDataObserver(adapterChangeListener); - RecyclerView list = (RecyclerView) view.findViewById(R.id.list); + list = (RecyclerView) view.findViewById(R.id.list); list.setHasFixedSize(true); list.setLayoutManager(new LinearLayoutManager(activity)); list.setAdapter(adapter); + + emptyState = (TextView) view.findViewById(R.id.empty_state); } public void bind() { @@ -30,4 +36,32 @@ public class UpdatesViewBinder { public void unbind() { adapter.stopListeningForStatusUpdates(); } + + private void updateEmptyState() { + if (adapter.getItemCount() == 0) { + list.setVisibility(View.GONE); + emptyState.setVisibility(View.VISIBLE); + } else { + list.setVisibility(View.VISIBLE); + emptyState.setVisibility(View.GONE); + } + } + + @SuppressWarnings("FieldCanBeLocal") + private final RecyclerView.AdapterDataObserver adapterChangeListener = new RecyclerView.AdapterDataObserver() { + @Override + public void onChanged() { + updateEmptyState(); + } + + @Override + public void onItemRangeInserted(int positionStart, int itemCount) { + updateEmptyState(); + } + + @Override + public void onItemRangeRemoved(int positionStart, int itemCount) { + updateEmptyState(); + } + }; } diff --git a/app/src/main/res/layout/installed_apps_layout.xml b/app/src/main/res/layout/installed_apps_layout.xml index 423b42c95..021676674 100644 --- a/app/src/main/res/layout/installed_apps_layout.xml +++ b/app/src/main/res/layout/installed_apps_layout.xml @@ -16,6 +16,18 @@ app:theme="?attr/actionBarTheme" app:popupTheme="?attr/actionBarPopupTheme" /> + + + +