package activity; import adapter.WebsiteAdapter; import android.app.Dialog; import android.content.Context; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.*; import application.App; import data.object_holder.Website; import dialogs.MessageDialog; import dialogs.OnClickButtonListener; import dialogs.YesNoDialog; public abstract class AHomeListOnClick implements ListView.OnItemClickListener, AdapterView.OnItemLongClickListener { private ListView listView; private Context context; public AHomeListOnClick(final Context context, View view, final EditText searchInput) { this.context = context; listView = (ListView) view; listView.setOnItemClickListener(this); listView.setOnItemLongClickListener(this); listView.setOnScrollListener(new ListView.OnScrollListener() { @Override public void onScroll(AbsListView view, int first_visible_item, int visible_item, int total_item_count) { } @Override public void onScrollStateChanged(AbsListView view, int scrolling_state) { if (scrolling_state != 0) { ((WebsiteAdapter) listView.getAdapter()).isScrolling = true; ((WebsiteAdapter) listView.getAdapter()).isStarting = true; ((WebsiteAdapter) listView.getAdapter()).notifyDataSetChanged(); InputMethodManager input_method_manager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); input_method_manager.hideSoftInputFromWindow(searchInput.getWindowToken(), 0); } else { ((WebsiteAdapter) listView.getAdapter()).isStarting = false; ((WebsiteAdapter) listView.getAdapter()).isScrolling = false; ((WebsiteAdapter) listView.getAdapter()).notifyDataSetChanged(); } } }); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String url = ((WebsiteAdapter) listView.getAdapter()).getUrl(position); if (url.equals("open")) { makeToast(true, "Feature is coming soon."); } else { openWebsite(url); } } protected abstract void openWebsite(String url); protected abstract void makeToast(boolean willVibrate, String message); @Override public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) { final WebsiteAdapter websiteAdapter = (WebsiteAdapter) listView.getAdapter(); final String bookmarkName = ((Website) websiteAdapter.getItem(position)).getName(); String message = "Do you want to delete this bookmark ( " + bookmarkName + " ) ? "; YesNoDialog yesNoDialog = new YesNoDialog(context, message, new YesNoDialog.OnClick() { @Override public void onYesClick(final Dialog dialog, TextView view) { String message = "The list will be updated automatically after a restart."; MessageDialog messageDialog = new MessageDialog(context, null, message); messageDialog.hideTitle(true); messageDialog.setListener(new OnClickButtonListener() { @Override public void onOKClick(Dialog d, View v) { d.dismiss(); ((AHome) context).finish(); System.exit(1); } }); App app = (App) ((AHome) context).getApplication(); int defaultListAdapter = getDefaultListAdapter(); if (defaultListAdapter == AHome.VIDEO_ADAPTER) { app.videoBookmark.bookmark.remove(position); app.videoBookmark.update(); messageDialog.show(); } else if (defaultListAdapter == AHome.MUSIC_ADAPTER) { app.musicBookmark.bookmark.remove(position); app.musicBookmark.update(); messageDialog.show(); } else if (defaultListAdapter == AHome.HOT_ADAPTER) { app.hotBookmark.bookmark.remove(position); app.hotBookmark.update(); messageDialog.show(); } dialog.dismiss(); } @Override public void onNoClick(Dialog dialog, TextView view) { dialog.dismiss(); } }); yesNoDialog.dialog.show(); return true; } protected abstract int getDefaultListAdapter(); }