Добавлен ExceptionHandler

This commit is contained in:
Victor 2013-08-29 18:22:15 +03:00
parent 131e65fbe4
commit a9f0aecd60
3 changed files with 67 additions and 14 deletions

View File

@ -2,7 +2,6 @@ package com.annimon.client.fragments;
import android.app.ListFragment; import android.app.ListFragment;
import android.os.Bundle; import android.os.Bundle;
import android.widget.ArrayAdapter;
import com.annimon.client.utils.MoreListHelper; import com.annimon.client.utils.MoreListHelper;

View File

@ -0,0 +1,54 @@
package com.annimon.client.utils;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
/**
* Handling exceptions.
* If error is critical or must be show to user, then
* call <b>alert</b> method.
* In other situations call <b>log</b> method.
*
* @author aNNiMON
*/
public class ExceptionHandler {
private static final boolean DEBUG = false;
private static final String TAG = "anmclient::ExceptionHandler";
public static void alert(Context context, Exception ex) {
alert(context, getErrorMessage(ex));
}
public static void alert(Context context, int resourceId) {
alert(context, context.getString(resourceId));
}
public static void alert(Context context, String message) {
new AlertDialog.Builder(context)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(android.R.string.dialog_alert_title)
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
public static void log(Exception ex) {
if (DEBUG) {
Log.e(TAG, getErrorMessage(ex));
}
}
private static String getErrorMessage(Exception ex) {
return ex.getMessage();
}
}

View File

@ -10,7 +10,7 @@ import android.widget.TextView;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
* Вспомагательный класс для создания подгружаемых списков. * Вспомагательный класс для создания подгружаемых списков.
* *
* @author aNNiMON * @author aNNiMON
*/ */
@ -34,7 +34,7 @@ public abstract class MoreListHelper<T> {
this.activity = activity; this.activity = activity;
if (footerView == null) { if (footerView == null) {
// Создаём footer по умочанию. // Создаём footer по умочанию.
footerView = new TextView(activity); footerView = new TextView(activity);
((TextView) footerView).setText("Loading..."); ((TextView) footerView).setText("Loading...");
} }
@ -47,8 +47,8 @@ public abstract class MoreListHelper<T> {
} }
/** /**
* Создаёт новый адаптер из ресурса разметки. * Создаёт новый адаптер из ресурса разметки.
* @param layoutResource ресурс разметки * @param layoutResource ресурс разметки
*/ */
public void createAdapter(int layoutResource) { public void createAdapter(int layoutResource) {
adapter = new ArrayAdapter<T>(activity, layoutResource, items); adapter = new ArrayAdapter<T>(activity, layoutResource, items);
@ -63,9 +63,9 @@ public abstract class MoreListHelper<T> {
} }
/** /**
* Задаёт количество элементов на страницу. * Задаёт количество элементов на страницу.
* Используется при загрузке новых элементов для ограничения загружаемых данных. * Используется при загрузке новых элементов для ограничения загружаемых данных.
* @param value количество элементов * @param value количество элементов
*/ */
public void setItemsPerPage(int value) { public void setItemsPerPage(int value) {
itemsPerPage = value; itemsPerPage = value;
@ -91,10 +91,10 @@ public abstract class MoreListHelper<T> {
}; };
/** /**
* Метод загрузки новых элементов списка. * Метод загрузки новых элементов списка.
* Выполняется в отдельном треде. * Выполняется в отдельном треде.
* @param items список для заполнения * @param items список для заполнения
* @param itemsPerPage количество элементов на страницу (по умолчанию 10) * @param itemsPerPage количество элементов на страницу (по умолчанию 10)
*/ */
public abstract void onLoadItems(ArrayList<T> items, int itemsPerPage); public abstract void onLoadItems(ArrayList<T> items, int itemsPerPage);
@ -103,9 +103,9 @@ public abstract class MoreListHelper<T> {
public void run() { public void run() {
loadingMore = true; loadingMore = true;
items = new ArrayList<T>(); items = new ArrayList<T>();
// Загружаем данные. // Загружаем данные.
onLoadItems(items, itemsPerPage); onLoadItems(items, itemsPerPage);
// Обновляем список и адаптер. // Обновляем список и адаптер.
activity.runOnUiThread(updateAdapterRunnable); activity.runOnUiThread(updateAdapterRunnable);
} }
}; };