package com.mobidev.listviewdatabase;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private DbFunctions dbFunctions;
private ArrayList<CountyModel> countiesList;
private ListView lvCounties;
private MyListAdapter adapter;
private ActionMode mActionMode;
private int currentListItemIndex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbFunctions = new DbFunctions(getApplicationContext());
dbFunctions.open();
lvCounties = (ListView) findViewById(R.id.my_listView);
countiesList = dbFunctions.fetchAllCounties();
adapter = new MyListAdapter(getApplicationContext(), countiesList);
lvCounties.setAdapter(adapter);
lvCounties.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (mActionMode != null) {
return false;
}
currentListItemIndex = position;
mActionMode = startSupportActionMode(mActionModeCallback);
view.setSelected(true);
return true;
}
});
adapter.notifyDataSetChanged();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_add) {
Intent intent_new_county = new Intent(getApplicationContext(), NewCountyActivity.class);
startActivity(intent_new_county);
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
// Called when the action mode is created; startActionMode() was called
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
return true;
}
// Called each time the action mode is shown. Always called after onCreateActionMode, but
// may be called multiple times if the mode is invalidated.
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_edit:
Intent edit_county_intent = new Intent(getApplicationContext(), EditCountyActivity.class);
edit_county_intent.putExtra(EditCountyActivity.SELECTED_COUNTY_ID, currentListItemIndex);
startActivity(edit_county_intent);
mode.finish(); // Action picked, so close the CAB
return true;
case R.id.menu_delete:
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}
// Called when the user exits the action mode
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
}
};
@Override
protected void onResume() {
dbFunctions.open();
super.onResume();
}
@Override
protected void onPause() {
dbFunctions.close();
super.onPause();
}
}