package com.uservoice.uservoicesdk.activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.ViewGroup; import android.view.WindowManager; import com.uservoice.uservoicesdk.R; import com.uservoice.uservoicesdk.flow.InitManager; import com.uservoice.uservoicesdk.ui.InstantAnswersAdapter; public abstract class InstantAnswersActivity extends BaseListActivity { private InstantAnswersAdapter adapter; public InstantAnswersActivity() { super(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getListView().setDivider(null); adapter = createAdapter(); setListAdapter(adapter); getListView().setOnHierarchyChangeListener(adapter); getListView().setOnItemClickListener(adapter); getListView().setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); new InitManager(this, new Runnable() { @Override public void run() { onInitialize(); } }).init(); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } protected void onInitialize() { adapter.notifyDataSetChanged(); } @Override public void onBackPressed() { if (adapter.hasText()) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.uv_confirm); builder.setMessage(getDiscardDialogMessage()); builder.setPositiveButton(R.string.uv_yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); builder.setNegativeButton(R.string.uv_no, null); builder.show(); } else { super.onBackPressed(); } } protected abstract InstantAnswersAdapter createAdapter(); protected abstract int getDiscardDialogMessage(); }