package com.lechucksoftware.proxy.proxysettings.ui.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.SectionIndexer;
import android.widget.TextView;
import com.lechucksoftware.proxy.proxysettings.R;
import com.lechucksoftware.proxy.proxysettings.feedbackutils.PInfo;
import java.util.List;
import timber.log.Timber;
/**
* Created by marco on 04/10/13.
*/
public class PInfoAdapter extends ArrayAdapter<PInfo> implements SectionIndexer
{
private static String TAG = PInfoAdapter.class.getSimpleName();
private final LayoutInflater inflater;
private Context ctx;
public PInfoAdapter(Context context)
{
super(context, R.layout.application_list_item);
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ctx = context;
}
public void setData(List<PInfo> pInfoList)
{
clear();
if (pInfoList != null)
{
for (PInfo pInfo : pInfoList)
{
add(pInfo);
}
}
}
public View getView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
try
{
if (view == null)
{
LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.application_list_item, null);
}
final PInfo listItem = (PInfo) getItem(position);
if (listItem != null)
{
listItem.icon = listItem.applicationInfo.loadIcon(ctx.getPackageManager());
((ImageView) view.findViewById(R.id.list_item_app_icon)).setImageDrawable(listItem.icon);
((TextView) view.findViewById(R.id.list_item_app_name)).setText(listItem.appname);
((TextView) view.findViewById(R.id.list_item_app_description)).setText(listItem.pname);
}
}
catch (Exception e)
{
Timber.i(e.toString());
}
return view;
}
private static String sections = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
@Override
public Object[] getSections()
{
String[] sectionsArr = new String[sections.length()];
for (int i = 0; i < sections.length(); i++)
sectionsArr[i] = "" + sections.charAt(i);
return sectionsArr;
}
@Override
public int getPositionForSection(int section)
{
int position = -1;
String sectionChar = sections.substring(section,section+1);
for (int i = 0; i < getCount(); i++)
{
if (getItem(i).appname.startsWith(sectionChar))
{
position = i;
break;
}
else
continue;
}
while(position == -1)
{
position = getPositionForSection(section - 1);
}
Timber.d("Section %d (%s) -> Position %d", section, sectionChar, position);
return position;
}
@Override
public int getSectionForPosition(int position)
{
PInfo item = getItem(position);
char c = item.appname.toUpperCase().charAt(0);
int index = sections.indexOf(c);
int section = 0;
if (index < 0)
section = 0;
else
section = index;
Timber.d("Position %d (%c) -> Section %d", position, c, section);
return section;
}
}