Go to the documentation of this file.00001 package com.github.rosjava.android_apps.map_manager;
00002
00003 import java.util.List;
00004
00005 import android.content.Context;
00006 import android.view.LayoutInflater;
00007 import android.view.View;
00008 import android.view.View.OnClickListener;
00009 import android.view.View.OnLongClickListener;
00010 import android.view.View.OnTouchListener;
00011 import android.view.ViewGroup;
00012 import android.widget.ArrayAdapter;
00013 import android.widget.RadioButton;
00014 import android.widget.TextView;
00015
00016 public class MapListArrayAdapter extends ArrayAdapter<MapListData> {
00017
00018 private class ViewHolder {
00019 TextView textView;
00020 RadioButton radioButton;
00021 }
00022
00023 private OnTouchListener touchListener;
00024 private OnLongClickListener longClickListener;
00025 private List<MapListData> mapList = null;
00026 private LayoutInflater inflator;
00027 private MainActivity context;
00028
00029 public MapListArrayAdapter(MainActivity context, int resourceId,
00030 List<MapListData> mapList, OnTouchListener touchListener,OnLongClickListener longClickListener) {
00031 super(context, resourceId, mapList);
00032 this.touchListener = touchListener;
00033 this.longClickListener = longClickListener;
00034 this.mapList = mapList;
00035 this.context = context;
00036
00037 }
00038
00039 @Override
00040 public MapListData getItem(int position) {
00041 return mapList.get(position);
00042 }
00043
00044 @Override
00045 public View getView(int position, View convertView, ViewGroup parent) {
00046 ViewHolder viewHolder;
00047
00048 if (convertView == null) {
00049 inflator = (LayoutInflater) getContext().getSystemService(
00050 Context.LAYOUT_INFLATER_SERVICE);
00051 convertView = inflator.inflate(R.layout.map_list_item, null);
00052 viewHolder = new ViewHolder();
00053 viewHolder.textView = (TextView) convertView
00054 .findViewById(R.id.map_list_text);
00055 viewHolder.radioButton = (RadioButton) convertView
00056 .findViewById(R.id.map_list_button);
00057 convertView.setTag(viewHolder);
00058 } else {
00059 viewHolder = (ViewHolder) convertView.getTag();
00060 }
00061 final MapListData mapListData = (MapListData) getItem(position);
00062 viewHolder.textView.setText(mapListData.getText());
00063 viewHolder.radioButton.setChecked(mapListData.isChecked());
00064 viewHolder.radioButton.setOnClickListener(new OnClickListener() {
00065
00066 @Override
00067 public void onClick(View view) {
00068 for (int i = 0; i < mapList.size(); i++) {
00069 mapList.get(i).setChecked(false);
00070 }
00071 mapListData.setChecked(true);
00072 notifyDataSetChanged();
00073 context.updateMapView(mapListData.getId());
00074
00075 }
00076
00077 });
00078 convertView.setId(position);
00079 convertView.setOnTouchListener(touchListener);
00080 convertView.setOnLongClickListener(longClickListener);
00081 return convertView;
00082 }
00083
00084 }