Android Open Source - SoundScheduler Rule List Adapter






From Project

Back to project page SoundScheduler.

License

The source code is released under:

GNU General Public License

If you think the Android project SoundScheduler 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

/*
 * Sound Scheduler/*from  w  ww. jav a2  s. c o  m*/
 * Copyright (C) 2013 Victor Kifer
 */

package com.victorkifer.SoundScheduler.adapters;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.victorkifer.SoundScheduler.R;
import com.victorkifer.SoundScheduler.entities.Rule;
import com.victorkifer.SoundScheduler.listeners.RuleDeleteListener;
import com.victorkifer.SoundScheduler.listeners.RuleItemStateListener;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class RuleListAdapter extends BaseAdapter {
    Context context;
    List<Rule> rules;
    private static LayoutInflater inflater = null;

    public RuleListAdapter(Context context, List<Rule> rules) {
        this.context = context;
        this.rules = rules;
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return rules.size();
    }

    @Override
    public Object getItem(int position) {
        return rules.get(position);
    }

    @Override
    public long getItemId(int position) {
        return rules.get(position).getId();
    }

    @Override
    public View getView(int position, View vi, ViewGroup parent) {
        if (vi == null) {
            vi = inflater.inflate(R.layout.listview_item, null);

            ResourceHolder rh = new ResourceHolder();
            rh.ivState = (ImageView) vi.findViewById(R.id.ivRuleState);
            rh.ivDelete = (ImageView) vi.findViewById(R.id.ivRuleDelete);
            rh.tvTime = (TextView) vi.findViewById(R.id.tvRuleName);
            rh.tvDaysRepeat = (TextView) vi.findViewById(R.id.tvRuleRepeat);
            rh.ruleStateListener = new RuleItemStateListener(getItemId(position));
            rh.ruleDeleteListener = new RuleDeleteListener(getItemId(position));

            vi.setTag(rh);
        }

        ResourceHolder rh = (ResourceHolder) vi.getTag();
        final ImageView ivState = rh.ivState;
        final ImageView ivDelete = rh.ivDelete;
        final TextView tvTime = rh.tvTime;
        final TextView tvRepeat = rh.tvDaysRepeat;

        rh.ruleStateListener.updateId(getItemId(position));
        ivState.setOnClickListener(rh.ruleStateListener);

        if(rules.get(position).isActive()) {
            ivState.setImageResource(R.drawable.ruleon);
        }
        else {
            ivState.setImageResource(R.drawable.ruleoff);
        }

        rh.ruleDeleteListener.updateId(getItemId(position));
        ivDelete.setOnClickListener(rh.ruleDeleteListener);

        Date date = new Date();
        date.setTime(rules.get(position).getStartTime());
        SimpleDateFormat dateFormat = new SimpleDateFormat("H:mm", Locale.US);
        String dateString = dateFormat.format(date) + "-";

        date.setTime(rules.get(position).getEndTime());
        dateString += dateFormat.format(date);

        tvTime.setText(dateString);

        String repeat = rules.get(position).getDaysRepeatString(context.getResources().getStringArray(R.array.days_short));
        if(repeat.isEmpty()) {
            repeat = context.getString(R.string.no_days_selected);
        }
        tvRepeat.setText(repeat);

        return vi;
    }

    private class ResourceHolder {
        public ImageView ivState;
        public ImageView ivDelete;
        public TextView tvTime;
        public TextView tvDaysRepeat;
        public RuleItemStateListener ruleStateListener;
        public RuleDeleteListener ruleDeleteListener;
    }
}




Java Source Code List

com.victorkifer.SoundScheduler.AboutActivity.java
com.victorkifer.SoundScheduler.EditRuleActivity.java
com.victorkifer.SoundScheduler.MainActivity.java
com.victorkifer.SoundScheduler.adapters.RuleListAdapter.java
com.victorkifer.SoundScheduler.database.RulesDataSource.java
com.victorkifer.SoundScheduler.database.RulesDatabaseHelper.java
com.victorkifer.SoundScheduler.entities.Rule.java
com.victorkifer.SoundScheduler.listeners.RuleDeleteListener.java
com.victorkifer.SoundScheduler.listeners.RuleItemStateListener.java
com.victorkifer.SoundScheduler.managers.SoundManager.java
com.victorkifer.SoundScheduler.receivers.BootCompleteReceiver.java
com.victorkifer.SoundScheduler.receivers.TimeChangeReceiver.java