Android Open Source - SELP2013 Course List Adapter






From Project

Back to project page SELP2013.

License

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.

Java Source Code

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;
  }
}




Java Source Code List

uk.co.skywelch.selp2013.AboutActivity.java
uk.co.skywelch.selp2013.CourseInformationActivity.java
uk.co.skywelch.selp2013.CourseListActivity.java
uk.co.skywelch.selp2013.CourseListAdapter.java
uk.co.skywelch.selp2013.Course.java
uk.co.skywelch.selp2013.CoursesParseTask.java
uk.co.skywelch.selp2013.CoursesXmlParser.java
uk.co.skywelch.selp2013.DrawerListAdapter.java
uk.co.skywelch.selp2013.FileDownloader.java
uk.co.skywelch.selp2013.HourMinute.java
uk.co.skywelch.selp2013.Lecture.java
uk.co.skywelch.selp2013.ListItem.java
uk.co.skywelch.selp2013.ListSection.java
uk.co.skywelch.selp2013.StringListItem.java
uk.co.skywelch.selp2013.TimetableActivity.java
uk.co.skywelch.selp2013.TimetableFragment.java
uk.co.skywelch.selp2013.TimetableListAdapter.java
uk.co.skywelch.selp2013.TimetableParseTask.java
uk.co.skywelch.selp2013.TimetableXmlParser.java
uk.co.skywelch.selp2013.VenueInformationActivity.java
uk.co.skywelch.selp2013.Venue.java
uk.co.skywelch.selp2013.VenuesParseTask.java
uk.co.skywelch.selp2013.VenuesXmlParser.java
uk.co.skywelch.selp2013.XMLUtilities.java