diff --git a/EmptyLayout/res/layout/view_empty.xml b/EmptyLayout/res/layout/view_empty.xml
index c78dc9d..4780d5e 100644
--- a/EmptyLayout/res/layout/view_empty.xml
+++ b/EmptyLayout/res/layout/view_empty.xml
@@ -16,4 +16,12 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center_horizontal" />
+
+
diff --git a/EmptyLayout/res/layout/view_error.xml b/EmptyLayout/res/layout/view_error.xml
index e655bdf..7dd1823 100644
--- a/EmptyLayout/res/layout/view_error.xml
+++ b/EmptyLayout/res/layout/view_error.xml
@@ -15,4 +15,12 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center_horizontal" />
+
+
diff --git a/EmptyLayout/res/layout/view_loading.xml b/EmptyLayout/res/layout/view_loading.xml
index 768b539..5a3e5a6 100644
--- a/EmptyLayout/res/layout/view_loading.xml
+++ b/EmptyLayout/res/layout/view_loading.xml
@@ -22,4 +22,11 @@
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal" />
+
+
diff --git a/EmptyLayout/res/values/strings.xml b/EmptyLayout/res/values/strings.xml
index c14b517..2d0f37b 100644
--- a/EmptyLayout/res/values/strings.xml
+++ b/EmptyLayout/res/values/strings.xml
@@ -8,5 +8,9 @@
No items yet
Please wait
Oops! Something wrong happened
+
+ Try again
+ Cancel
+ Try again
diff --git a/EmptyLayout/src/com/kanak/emptylayout/EmptyLayout.java b/EmptyLayout/src/com/kanak/emptylayout/EmptyLayout.java
index 3e1e15e..0f270fa 100644
--- a/EmptyLayout/src/com/kanak/emptylayout/EmptyLayout.java
+++ b/EmptyLayout/src/com/kanak/emptylayout/EmptyLayout.java
@@ -27,10 +27,12 @@ public class EmptyLayout {
private int mErrorMessageViewId;
private int mEmptyMessageViewId;
private int mLoadingMessageViewId;
-
- private View.OnClickListener mLoadingViewClickListener;
- private View.OnClickListener mEmptyViewClickListener;
- private View.OnClickListener mErrorViewClickListener;
+ private LayoutInflater mInflater;
+ private boolean mViewsAdded;
+ private int mLoadingAnimationViewId;
+ private View.OnClickListener mLoadingButtonClickListener;
+ private View.OnClickListener mEmptyButtonClickListener;
+ private View.OnClickListener mErrorButtonClickListener;
// ---------------------------
// static variables
@@ -55,9 +57,12 @@ public class EmptyLayout {
private String mErrorMessage = "Oops! Something wrong happened";
private String mEmptyMessage = "No items yet";
private String mLoadingMessage = "Please wait";
- private LayoutInflater mInflater;
- private boolean mViewsAdded;
- private int mLoadingAnimationViewId;
+ private int mLoadingViewButtonId = R.id.buttonLoading;
+ private int mErrorViewButtonId = R.id.buttonError;
+ private int mEmptyViewButtonId = R.id.buttonEmpty;
+ private boolean mShowEmptyButton = true;
+ private boolean mShowLoadingButton = true;
+ private boolean mShowErrorButton = true;
// ---------------------------
// getters and setters
@@ -283,69 +288,161 @@ public int getLoadingAnimationViewId() {
*/
public void setLoadingAnimationViewId(int loadingAnimationViewId) {
this.mLoadingAnimationViewId = loadingAnimationViewId;
- }
+ }
+
+ /**
+ * Gets the OnClickListener which perform when LoadingView was click
+ * @return
+ */
+ public View.OnClickListener getLoadingButtonClickListener() {
+ return mLoadingButtonClickListener;
+ }
/**
* Sets the OnClickListener to LoadingView
- * @param loadingViewClickListener OnClickListener Object
+ * @param loadingButtonClickListener OnClickListener Object
+ */
+ public void setLoadingButtonClickListener(View.OnClickListener loadingButtonClickListener) {
+ this.mLoadingButtonClickListener = loadingButtonClickListener;
+ }
+
+ /**
+ * Gets the OnClickListener which perform when EmptyView was click
+ * @return
*/
- public void setLoadingViewClickListener(View.OnClickListener loadingViewClickListener) {
- this.mLoadingViewClickListener = loadingViewClickListener;
- if(mLoadingView != null)
- mLoadingView.setOnClickListener(mLoadingViewClickListener);
+ public View.OnClickListener getEmptyButtonClickListener() {
+ return mEmptyButtonClickListener;
}
/**
* Sets the OnClickListener to EmptyView
- * @param emptyViewClickListener OnClickListener Object
+ * @param emptyButtonClickListener OnClickListener Object
+ */
+ public void setEmptyButtonClickListener(View.OnClickListener emptyButtonClickListener) {
+ this.mEmptyButtonClickListener = emptyButtonClickListener;
+ }
+
+ /**
+ * Gets the OnClickListener which perform when ErrorView was click
+ * @return
*/
- public void setEmptyViewClickListener(View.OnClickListener emptyViewClickListener) {
- this.mEmptyViewClickListener = emptyViewClickListener;
- if(mEmptyView != null)
- mEmptyView.setOnClickListener(mEmptyViewClickListener);
+ public View.OnClickListener getErrorButtonClickListener() {
+ return mErrorButtonClickListener;
}
/**
* Sets the OnClickListener to ErrorView
- * @param errorViewClickListener OnClickListener Object
+ * @param errorButtonClickListener OnClickListener Object
*/
- public void setErrorViewClickListener(View.OnClickListener errorViewClickListener) {
- this.mErrorViewClickListener = errorViewClickListener;
- if(mErrorView != null)
- mErrorView.setOnClickListener(mErrorViewClickListener);
+ public void setErrorButtonClickListener(View.OnClickListener errorButtonClickListener) {
+ this.mErrorButtonClickListener = errorButtonClickListener;
}
+ /**
+ * Gets if a button is shown in the empty view
+ * @return if a button is shown in the empty view
+ */
+ public boolean isEmptyButtonShown() {
+ return mShowEmptyButton;
+ }
/**
- * Gets the OnClickListener which perform when LoadingView was click
- * @return
+ * Sets if a button will be shown in the empty view
+ * @param showEmptyButton will a button be shown in the empty view
*/
- public View.OnClickListener getLoadingViewClickListener() {
- return mLoadingViewClickListener;
- }
+ public void setEmptyButtonShown(boolean showEmptyButton) {
+ this.mShowEmptyButton = showEmptyButton;
+ }
+ /**
+ * Gets if a button is shown in the loading view
+ * @return if a button is shown in the loading view
+ */
+ public boolean isLoadingButtonShown() {
+ return mShowLoadingButton;
+ }
- /**
- * Gets the OnClickListener which perform when EmptyView was click
- * @return
+ /**
+ * Sets if a button will be shown in the loading view
+ * @param showEmptyButton will a button be shown in the loading view
*/
- public View.OnClickListener getEmptyViewClickListener() {
- return mEmptyViewClickListener;
- }
+ public void setLoadingButtonShown(boolean showLoadingButton) {
+ this.mShowLoadingButton = showLoadingButton;
+ }
+ /**
+ * Gets if a button is shown in the error view
+ * @return if a button is shown in the error view
+ */
+ public boolean isErrorButtonShown() {
+ return mShowErrorButton;
+ }
- /**
- * Gets the OnClickListener which perform when ErrorView was click
- * @return
+ /**
+ * Sets if a button will be shown in the error view
+ * @param showEmptyButton will a button be shown in the error view
*/
- public View.OnClickListener getErrorViewClickListener() {
- return mErrorViewClickListener;
- }
+ public void setErrorButtonShown(boolean showErrorButton) {
+ this.mShowErrorButton = showErrorButton;
+ }
+
+ /**
+ * Gets the ID of the button in the loading view
+ * @return the ID of the button in the loading view
+ */
+ public int getmLoadingViewButtonId() {
+ return mLoadingViewButtonId;
+ }
+
+ /**
+ * Sets the ID of the button in the loading view. This ID is required if you want the button the loading view to be click-able.
+ * @param loadingViewButtonId the ID of the button in the loading view
+ */
+ public void setLoadingViewButtonId(int loadingViewButtonId) {
+ this.mLoadingViewButtonId = loadingViewButtonId;
+ }
+
+ /**
+ * Gets the ID of the button in the error view
+ * @return the ID of the button in the error view
+ */
+ public int getErrorViewButtonId() {
+ return mErrorViewButtonId;
+ }
+
+ /**
+ * Sets the ID of the button in the error view. This ID is required if you want the button the error view to be click-able.
+ * @param errorViewButtonId the ID of the button in the error view
+ */
+ public void setErrorViewButtonId(int errorViewButtonId) {
+ this.mErrorViewButtonId = errorViewButtonId;
+ }
+
+ /**
+ * Gets the ID of the button in the empty view
+ * @return the ID of the button in the empty view
+ */
+ public int getEmptyViewButtonId() {
+ return mEmptyViewButtonId;
+ }
+
+ /**
+ * Sets the ID of the button in the empty view. This ID is required if you want the button the empty view to be click-able.
+ * @param emptyViewButtonId the ID of the button in the empty view
+ */
+ public void setEmptyViewButtonId(int emptyViewButtonId) {
+ this.mEmptyViewButtonId = emptyViewButtonId;
+ }
+
+
+
+
+
// ---------------------------
// private methods
// ---------------------------
-
+
private void changeEmptyType() {
setDefaultValues();
@@ -419,15 +516,48 @@ private void setDefaultValues() {
if (mEmptyView==null) {
mEmptyView = (ViewGroup) mInflater.inflate(R.layout.view_empty, null);
if (!(mEmptyMessageViewId>0)) mEmptyMessageViewId = R.id.textViewMessage;
+ if (mShowEmptyButton && mEmptyViewButtonId>0 && mEmptyButtonClickListener!=null) {
+ View emptyViewButton = mEmptyView.findViewById(mEmptyViewButtonId);
+ if (emptyViewButton != null) {
+ emptyViewButton.setOnClickListener(mEmptyButtonClickListener);
+ emptyViewButton.setVisibility(View.VISIBLE);
+ }
+ }
+ else if (mEmptyViewButtonId>0) {
+ View emptyViewButton = mEmptyView.findViewById(mEmptyViewButtonId);
+ emptyViewButton.setVisibility(View.GONE);
+ }
}
if (mLoadingView==null) {
mLoadingView = (ViewGroup) mInflater.inflate(R.layout.view_loading, null);
mLoadingAnimationViewId = R.id.imageViewLoading;
if (!(mLoadingMessageViewId>0)) mLoadingMessageViewId = R.id.textViewMessage;
+ if (mShowLoadingButton && mLoadingViewButtonId>0 && mLoadingButtonClickListener!=null) {
+ View loadingViewButton = mLoadingView.findViewById(mLoadingViewButtonId);
+ if (loadingViewButton != null) {
+ loadingViewButton.setOnClickListener(mLoadingButtonClickListener);
+ loadingViewButton.setVisibility(View.VISIBLE);
+ }
+ }
+ else if (mLoadingViewButtonId>0) {
+ View loadingViewButton = mLoadingView.findViewById(mLoadingViewButtonId);
+ loadingViewButton.setVisibility(View.GONE);
+ }
}
if (mErrorView==null) {
mErrorView = (ViewGroup) mInflater.inflate(R.layout.view_error, null);
if (!(mErrorMessageViewId>0)) mErrorMessageViewId = R.id.textViewMessage;
+ if (mShowErrorButton && mErrorViewButtonId>0 && mErrorButtonClickListener!=null) {
+ View errorViewButton = mErrorView.findViewById(mErrorViewButtonId);
+ if (errorViewButton != null) {
+ errorViewButton.setOnClickListener(mErrorButtonClickListener);
+ errorViewButton.setVisibility(View.VISIBLE);
+ }
+ }
+ else if (mErrorViewButtonId>0) {
+ View errorViewButton = mErrorView.findViewById(mErrorViewButtonId);
+ errorViewButton.setVisibility(View.GONE);
+ }
}
}
diff --git a/EmptyLayoutSample/res/values/strings.xml b/EmptyLayoutSample/res/values/strings.xml
index 347ee8f..738701d 100644
--- a/EmptyLayoutSample/res/values/strings.xml
+++ b/EmptyLayoutSample/res/values/strings.xml
@@ -1,7 +1,7 @@
- Empty View Test
+ Empty View Sample
Settings
Hello world!
diff --git a/EmptyLayoutSample/src/com/kanak/emptylayoutsample/MainActivity.java b/EmptyLayoutSample/src/com/kanak/emptylayoutsample/MainActivity.java
index 0cd6abd..9da8ab7 100644
--- a/EmptyLayoutSample/src/com/kanak/emptylayoutsample/MainActivity.java
+++ b/EmptyLayoutSample/src/com/kanak/emptylayoutsample/MainActivity.java
@@ -8,13 +8,21 @@
import android.os.Bundle;
import android.view.View;
+import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
+import android.widget.Toast;
import android.app.ListActivity;
public class MainActivity extends ListActivity {
private EmptyLayout mEmptyLayout; // this is required to show different layouts (loading or empty or error)
private ArrayAdapter mAdapter;
+ private View.OnClickListener mErrorClickListener = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Toast.makeText(MainActivity.this, "Try again button clicked", Toast.LENGTH_LONG).show();
+ }
+ };
// the list items
static final String[] MOVIES = new String[] {
@@ -45,6 +53,7 @@ protected void onCreate(Bundle savedInstanceState) {
// initialize the empty view
mEmptyLayout = new EmptyLayout(this, getListView());
+ mEmptyLayout.setErrorButtonClickListener(mErrorClickListener);
// populate the list view
populateList();
diff --git a/Screenshots/Screen01.png b/Screenshots/Screen01.png
index 98a186d..cfb6d88 100644
Binary files a/Screenshots/Screen01.png and b/Screenshots/Screen01.png differ
diff --git a/Screenshots/Screen02.png b/Screenshots/Screen02.png
index 5b55c4a..7622161 100644
Binary files a/Screenshots/Screen02.png and b/Screenshots/Screen02.png differ
diff --git a/Screenshots/Screen03.png b/Screenshots/Screen03.png
index fe90486..452b03e 100644
Binary files a/Screenshots/Screen03.png and b/Screenshots/Screen03.png differ
diff --git a/Screenshots/Screen04.png b/Screenshots/Screen04.png
index 87e5329..9790855 100644
Binary files a/Screenshots/Screen04.png and b/Screenshots/Screen04.png differ