.
Android Fragment SQLite 3
1) Startup
2) Add getEmployees Method to EmployeeDAO
File Name: EmployeeDAO.java
package com.notarazi.myviewpagertablayout1.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.ParseException;
import com.notarazi.myviewpagertablayout1.model.Employee;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Locale;
public class EmployeeDAO extends EmployeeDBDAO {
private static final SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd", Locale.ENGLISH);
public EmployeeDAO(Context context) {
super(context);
}
//...
public long save(Employee employee) {
ContentValues values = new ContentValues();
values.put(DataBaseHelper.NAME_COLUMN, employee.getName());
values.put(DataBaseHelper.EMPLOYEE_DOB,formatter.format(employee.getDateOfBirth()));
values.put(DataBaseHelper.EMPLOYEE_SALARY, employee.getSalary());
return database.insert(DataBaseHelper.EMPLOYEE_TABLE, null, values);
}
//Get all records from the database
public ArrayList<Employee> getEmployees() {
ArrayList<Employee> employees = new ArrayList<Employee>();
Cursor cursor = database.query(DataBaseHelper.EMPLOYEE_TABLE,
new String[] { DataBaseHelper.ID_COLUMN,
DataBaseHelper.NAME_COLUMN,
DataBaseHelper.EMPLOYEE_DOB,
DataBaseHelper.EMPLOYEE_SALARY }, null, null, null,
null, null);
while (cursor.moveToNext()) {
Employee employee = new Employee();
employee.setId(cursor.getInt(0));
employee.setName(cursor.getString(1));
try {
employee.setDateOfBirth(formatter.parse(cursor.getString(2)));
} catch (ParseException e) {
employee.setDateOfBirth(null);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
employee.setSalary(cursor.getDouble(3));
employees.add(employee);
}
return employees;
}
}
|
3) Create Adapter for Employee Model
package com.notarazi.myviewpagertablayout1.model;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.notarazi.myviewpagertablayout1.R;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;
public class EmpListAdapter extends ArrayAdapter<Employee> {
private Context context;
List<Employee> employees;
private static final SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd", Locale.ENGLISH);
public EmpListAdapter(Context context, List<Employee> employees) {
super(context, R.layout.list_item, employees);
this.context = context;
this.employees = employees;
}
private class ViewHolder {
TextView empIdTxt;
TextView empNameTxt;
TextView empDobTxt;
TextView empSalaryTxt;
}
@Override
public int getCount() {
return employees.size();
}
@Override
public Employee getItem(int position) {
return employees.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.empIdTxt = (TextView) convertView
.findViewById(R.id.txt_emp_id);
holder.empNameTxt = (TextView) convertView
.findViewById(R.id.txt_emp_name);
holder.empDobTxt = (TextView) convertView
.findViewById(R.id.txt_emp_dob);
holder.empSalaryTxt = (TextView) convertView
.findViewById(R.id.txt_emp_salary);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Employee employee = (Employee) getItem(position);
holder.empIdTxt.setText(employee.getId() + "");
holder.empNameTxt.setText(employee.getName());
holder.empSalaryTxt.setText(employee.getSalary() + "");
holder.empDobTxt.setText(formatter.format(employee.getDateOfBirth()));
return convertView;
}
@Override
public void add(Employee employee) {
employees.add(employee);
notifyDataSetChanged();
super.add(employee);
}
@Override
public void remove(Employee employee) {
employees.remove(employee);
notifyDataSetChanged();
super.remove(employee);
}
}
|
4) Update Fragment Controller (Fragment 2)
File Name: Fragment2.java
(Orange highlighted statements are commented at the moment. They will be used at later steps)
package com.notarazi.myviewpagertablayout1;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.Toast;
import com.notarazi.myviewpagertablayout1.db.EmployeeDAO;
import com.notarazi.myviewpagertablayout1.model.EmpListAdapter;
import com.notarazi.myviewpagertablayout1.model.Employee;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
public class FragmentPage2 extends Fragment implements OnItemClickListener,
OnItemLongClickListener {
public static final String ARG_ITEM_ID = "employee_list";
Activity activity;
ListView employeeListView;
ArrayList<Employee> employees;
EmpListAdapter employeeListAdapter;
EmployeeDAO employeeDAO;
private GetEmpTask task;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = getActivity();
employeeDAO = new EmployeeDAO(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_page2, container,
false);
findViewsById(view);
task = new GetEmpTask(activity);
task.execute((Void) null);
employeeListView.setOnItemClickListener(this);
employeeListView.setOnItemLongClickListener(this);
// Employee e = employeeDAO.getEmployee(1);
// Log.d("employee e", e.toString());
return view;
}
private void findViewsById(View view) {
employeeListView = (ListView) view.findViewById(R.id.list_emp);
}
@Override
public void onResume() {
//getActivity().setTitle(R.string.app_name);
//getActivity().getActionBar().setTitle(R.string.app_name);
super.onResume();
}
@Override
public void onItemClick(AdapterView<?> list, View arg1, int position,
long arg3) {
Employee employee = (Employee) list.getItemAtPosition(position);
if (employee != null) {
Bundle arguments = new Bundle();
arguments.putParcelable("selectedEmployee", employee);
//**CustomEmpDialogFragment customEmpDialogFragment = new CustomEmpDialogFragment();
//**customEmpDialogFragment.setArguments(arguments);
//**customEmpDialogFragment.show(getFragmentManager(),
//** CustomEmpDialogFragment.ARG_ITEM_ID);
}
}
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long arg3) {
Employee employee = (Employee) parent.getItemAtPosition(position);
// Use AsyncTask to delete from database
//**employeeDAO.delete(employee);
//**employeeListAdapter.remove(employee);
return true;
}
public class GetEmpTask extends AsyncTask<Void, Void, ArrayList<Employee>> {
private final WeakReference<Activity> activityWeakRef;
public GetEmpTask(Activity context) {
this.activityWeakRef = new WeakReference<Activity>(context);
}
@Override
protected ArrayList<Employee> doInBackground(Void... arg0) {
ArrayList<Employee> employeeList = employeeDAO.getEmployees();
return employeeList;
}
@Override
protected void onPostExecute(ArrayList<Employee> empList) {
if (activityWeakRef.get() != null
&& !activityWeakRef.get().isFinishing()) {
Log.d("employees", empList.toString());
employees = empList;
if (empList != null) {
if (empList.size() != 0) {
employeeListAdapter = new EmpListAdapter(activity,
empList);
employeeListView.setAdapter(employeeListAdapter);
} else {
Toast.makeText(activity, "No Employee Records",
Toast.LENGTH_LONG).show();
}
}
}
}
}
/*
* This method is invoked from MainActivity onFinishDialog() method. It is
* called from CustomEmpDialogFragment when an employee record is updated.
* This is used for communicating between fragments.
*/
public void updateView() {
task = new GetEmpTask(activity);
task.execute((Void) null);
}
}
|
5) RUN
DOWNLOAD:
.
This is a fantastic resource for beginners as well as experienced readers.azure devops online training
ReplyDeleteAb Initio course content provides a structured curriculum covering important concepts in enterprise ETL and data processing. This ab initio course content includes graph development, components, data transformation, metadata handling, performance tuning, and deployment. Learners build practical skills through assignments and real-world examples.
ReplyDelete