Back to project page SELP2013.
The source code is released under:
License ======= This work is licensed under the BSD 2-clause license as follows. # BSD 2-clause license Copyright (c) 2013, Sky Welch All rights reserved. Redistribution and use in source and ...
If you think the Android project SELP2013 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package uk.co.skywelch.selp2013; //from w w w . java 2s .c o m import java.util.ArrayList; import java.util.List; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.Filter; import android.widget.Filterable; import android.widget.TextView; import com.google.gson.Gson; public class CourseListAdapter extends BaseAdapter implements Filterable { public static final String TAG = "CourseListAdapter"; private Context mContext; private int layoutResourceId; private ArrayList<Course> courses; private ArrayList<Course> orig_courses; private CourseFilter courseFilter; public CourseListAdapter(Context mContext, int layoutResourceId, ArrayList<Course> courses) { this.layoutResourceId = layoutResourceId; this.mContext = mContext; this.courses = courses; this.orig_courses = courses; } // Listener handling changes in course checkbox state private OnClickListener onCourseCheckedListener = new OnClickListener() { @Override public void onClick(View v) { CheckBox checkbox = (CheckBox) v; boolean isChecked = checkbox.isChecked(); String tag = checkbox.getTag().toString(); if (tag != null) { boolean check_stored = TimetableActivity.course_checks.contains(tag); // Update course check map if the stored state should change if (check_stored && !isChecked) TimetableActivity.course_checks.remove(tag); else if (!check_stored && isChecked) TimetableActivity.course_checks.add(tag); if (check_stored != isChecked) { Log.d(TAG, "Setting course " + tag + " checked state to " + isChecked); TimetableActivity.checked_semesterone_adapter.resetItems(); TimetableActivity.checked_semestertwo_adapter.resetItems(); Gson gson = new Gson(); String json_checks = gson.toJson(TimetableActivity.course_checks); // Save the new check state SharedPreferences preferences = PreferenceManager .getDefaultSharedPreferences(mContext); SharedPreferences.Editor editor = preferences.edit(); editor.putString("course_checks", json_checks); editor.commit(); } } } }; @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); convertView = inflater.inflate(layoutResourceId, parent, false); } Course course = (Course) getItem(position); TextView tvTitle = (TextView) convertView.findViewById(R.id.rowTitle); tvTitle.setText(course.getNamePlusAcronym()); CheckBox tvCheckbox = (CheckBox) convertView.findViewById(R.id.textTimetableDescription); boolean child_checked = TimetableActivity.course_checks.contains(course.acronym); tvCheckbox.setChecked(child_checked); tvCheckbox.setTag(new String(course.acronym)); tvCheckbox.setOnClickListener(onCourseCheckedListener); return convertView; } @Override public boolean hasStableIds() { return false; } private class CourseFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); if (constraint == null || constraint.length() == 0) { results.values = orig_courses; results.count = orig_courses.size(); } else { List<Course> nCourses = new ArrayList<Course>(); constraint = constraint.toString().toUpperCase(Locale.US); for (Course c : orig_courses) { boolean b = false; if (CourseListActivity.course_filter == 0) { b = c.getNamePlusAcronym().toUpperCase(Locale.US).contains(constraint); } else if (CourseListActivity.course_filter == 1) { b = c.types_string.toUpperCase(Locale.US).contains(constraint); } else if (CourseListActivity.course_filter == 2) { b = Integer.toString(c.level).toUpperCase(Locale.US).equals(constraint); } else if (CourseListActivity.course_filter == 3) { b = Integer.toString(c.points).toUpperCase(Locale.US).equals(constraint); } else if (CourseListActivity.course_filter == 4) { b = Integer.toString(c.year).toUpperCase(Locale.US).equals(constraint); } else if (CourseListActivity.course_filter == 5) { b = c.deliveryperiod.toUpperCase(Locale.US).equals("S" + constraint); } else if (CourseListActivity.course_filter == 6) { b = c.lecturer.toUpperCase(Locale.US).contains(constraint); } if (b) { nCourses.add(c); } } results.values = nCourses; results.count = nCourses.size(); } return results; } @SuppressWarnings("unchecked") @Override protected void publishResults(CharSequence constraint, FilterResults results) { if (results.count == 0) { notifyDataSetInvalidated(); courses = new ArrayList<Course>(); } else { courses = (ArrayList<Course>) results.values; notifyDataSetChanged(); } } } @Override public Filter getFilter() { if (courseFilter == null) courseFilter = new CourseFilter(); return courseFilter; } public void resetData() { courses = orig_courses; } @Override public int getCount() { return courses.size(); } @Override public Object getItem(int position) { return courses.get(position); } @Override public long getItemId(int position) { return position; } }