Skip to content

Instantly share code, notes, and snippets.

@gadfil
Created November 9, 2015 13:56
package ru.gadfil.brainstorage.view.fragment;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import ru.gadfil.brainstorage.R;
import ru.gadfil.brainstorage.model.adapter.JobCursorAdapter;
import ru.gadfil.brainstorage.model.data.object.Constant;
import ru.gadfil.brainstorage.model.data.table.Jobs;
import ru.gadfil.brainstorage.model.database.Provider;
import ru.gadfil.brainstorage.view.Navigate;
/**
* Created by gadfil on 21.07.2014.
*/
public class JobListFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>,
AdapterView.OnItemClickListener{
public static final int FAVORITE_LIST = 42;
private static final String SELECTION_ID = "selection_id";
private ListView mListView;
private JobCursorAdapter mAdapter;
private Navigate mNavigate;
private ActionBar mActionBar;
private long mSelectionId =1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.list_fragment, container, false);
// mActionBar.setDisplayHomeAsUpEnabled(false);
mListView = (ListView) rootView.findViewById(R.id.listView);
mAdapter = new JobCursorAdapter(getActivity(), null);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(this);
if(getArguments()!=null){
mSelectionId = getArguments().getLong(SELECTION_ID);
}
Log.d("log","mSelectionId: " + mSelectionId);
getActivity().getSupportLoaderManager().initLoader((int) mSelectionId, null, this);
return rootView;
}
public static JobListFragment newInstance(long selectionId) {
Bundle arg = new Bundle();
arg.putLong(SELECTION_ID, selectionId);
JobListFragment fragment = new JobListFragment();
fragment.setArguments(arg);
return fragment;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
setHasOptionsMenu(true);
try {
mNavigate = (Navigate) activity;
setHasOptionsMenu(true);
mActionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
mActionBar.setSubtitle(null);
mActionBar.setDisplayHomeAsUpEnabled(true);
} catch (ClassCastException e) {
throw new ClassCastException("Activity must implement Navigate.");
}
}
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
switch (i) {
case FAVORITE_LIST:
return new CursorLoader(getActivity(), Provider.FAVORITE_JOBS_SETTING_CONTENT_URI,
new String[]{
Jobs.TABLE_NAME + '.' + Jobs._ID,
Jobs.TABLE_NAME + '.' + Jobs.CONTRACT,
Jobs.TABLE_NAME + '.' + Jobs.FULTIME,
Jobs.TABLE_NAME + '.' + Jobs.REMOTELY,
Jobs.TABLE_NAME + '.' + Jobs.PUB_DATE,
Jobs.TABLE_NAME + '.' + Jobs.LOCATION,
Jobs.TABLE_NAME + '.' + Jobs.LOGO_URL,
Jobs.TABLE_NAME + '.' + Jobs.LOGO_SRC,
Jobs.TABLE_NAME + '.' + Jobs.BONUS,
Jobs.TABLE_NAME + '.' + Jobs.COMPANY,
Jobs.TABLE_NAME + '.' + Jobs.LINK,
Jobs.TABLE_NAME + '.' + Jobs.JOB,
Jobs.TABLE_NAME + '.' + Jobs.PUB_DATE_TEXT
},
Constant.SETTING_FAVORITE_JOBS_WHERE,
null, null);
default:
return new CursorLoader(getActivity(), Provider.SELECTION_JOBS_SETTING_CONTENT_URI,
new String[]{
Jobs.TABLE_NAME + '.' + Jobs._ID,
Jobs.TABLE_NAME + '.' + Jobs.CONTRACT,
Jobs.TABLE_NAME + '.' + Jobs.FULTIME,
Jobs.TABLE_NAME + '.' + Jobs.REMOTELY,
Jobs.TABLE_NAME + '.' + Jobs.PUB_DATE,
Jobs.TABLE_NAME + '.' + Jobs.LOCATION,
Jobs.TABLE_NAME + '.' + Jobs.LOGO_URL,
Jobs.TABLE_NAME + '.' + Jobs.LOGO_SRC,
Jobs.TABLE_NAME + '.' + Jobs.BONUS,
Jobs.TABLE_NAME + '.' + Jobs.COMPANY,
Jobs.TABLE_NAME + '.' + Jobs.LINK,
Jobs.TABLE_NAME + '.' + Jobs.JOB,
Jobs.TABLE_NAME + '.' + Jobs.PUB_DATE_TEXT
},
Jobs.TABLE_NAME + '.' + Jobs.SELECTION_ID + "=? AND " + Constant.SETTING_SELECTION_JOBS_WHERE,
new String[]{String.valueOf(mSelectionId)}, null);
}
//
}
@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
mAdapter.swapCursor(cursor);
}
@Override
public void onLoaderReset(Loader<Cursor> cursorLoader) {
mAdapter.swapCursor(null);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if( mSelectionId == FAVORITE_LIST ){
mNavigate.loadJobDescription( id);
}else{
mNavigate.loadJobDescription(id);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
mNavigate.loadSelectionList();
break;
}
return super.onOptionsItemSelected(item);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment