package ca.uwccf.prayerbox.MainScreen; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import ca.uwccf.prayerbox.R; import ca.uwccf.prayerbox.Data.Prayer; import ca.uwccf.prayerbox.Data.PrayerApplication; import ca.uwccf.prayerbox.LogIn.PrayerLoginActivity; import ca.uwccf.prayerbox.R.id; import ca.uwccf.prayerbox.R.layout; import android.content.Context; import android.content.SharedPreferences; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.TextView; import android.widget.Toast; public class PrayerAdapter extends ArrayAdapter<Prayer> { private ArrayList<Prayer> items; private Context context; private boolean prayerLogItem = false; private SparseBooleanArray selectedItemIds; public PrayerAdapter(Context context, ArrayList<Prayer> items, boolean prayerLogItem) { super(context, R.layout.list_item_prayer, items); selectedItemIds = new SparseBooleanArray(); this.context = context; this.items = items; this.prayerLogItem = prayerLogItem; } public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.list_item_prayer, null); } final Prayer item = items.get(position); if (item != null) { // My layout has only one TextView TextView itemView = (TextView) view.findViewById(R.id.label); if (itemView != null) { // do whatever you want with your string and long itemView.setText(item.subject); } TextView authorView = (TextView) view.findViewById(R.id.author); if (authorView != null) { authorView.setText(item.author); } TextView date = (TextView) view.findViewById(R.id.date); if (date != null) { date.setText(item.date); } TextView request = (TextView) view.findViewById(R.id.request); if (request != null) { request.setText(item.request); } final CheckBox star = (CheckBox) view.findViewById(R.id.star); if (prayerLogItem) { star.setVisibility(View.GONE); } else { star.setChecked(item.isStarred); } star.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (star.isChecked()) { if(!PrayerLoginActivity.intInfo.isNetworkAvailable(getContext().getApplicationContext())){ star.setChecked(false); Toast.makeText(getContext().getApplicationContext(), R.string.no_internet, Toast.LENGTH_LONG).show(); } StringRequest request = new StringRequest(Request.Method.POST, getContext().getString(R.string.prayer_log_add_url), new Response.Listener<String>() { @Override public void onResponse(String result) { ((MainTabbedFragmentActivity) context).refreshPrayerLog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { SharedPreferences prefs = getContext().getApplicationContext().getSharedPreferences("account", 0); String user = prefs.getString("user",""); Map<String, String> map = new HashMap<String, String>(); map.put("user", user); map.put("prayer_id", item.prayer_id); return map; } }; PrayerApplication.getInstance().addToRequestQueue(request); item.isStarred = true; } else { if(!PrayerLoginActivity.intInfo.isNetworkAvailable(getContext().getApplicationContext())){ star.setChecked(true); Toast.makeText(getContext().getApplicationContext(), R.string.no_internet, Toast.LENGTH_LONG).show(); } StringRequest request = new StringRequest(Request.Method.POST, getContext().getString(R.string.prayer_log_del_url), new Response.Listener<String>() { @Override public void onResponse(String result) { ((MainTabbedFragmentActivity) context).refreshPrayerLog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { SharedPreferences prefs = getContext().getApplicationContext().getSharedPreferences("account", 0); String user = prefs.getString("user",""); Map<String, String> map = new HashMap<String, String>(); map.put("user", user); map.put("prayer_id", item.prayer_id); return map; } }; PrayerApplication.getInstance().addToRequestQueue(request); item.isStarred = false; } } }); } return view; } public void toggleSelection(int position) { selectView(position, !selectedItemIds.get(position)); } public void removeSelection() { selectedItemIds = new SparseBooleanArray(); notifyDataSetChanged(); } public void selectView(int position, boolean value) { if (value) selectedItemIds.put(position, value); else selectedItemIds.delete(position); notifyDataSetChanged(); } public int getSelectedCount() { return selectedItemIds.size(); } public SparseBooleanArray getSelectedIds() { return selectedItemIds; } }