package garin.artemiy.compassview.example;
import android.content.Context;
import android.location.Location;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import garin.artemiy.compassview.library.CompassSensorActivity;
import garin.artemiy.compassview.library.CompassSensorManager;
import garin.artemiy.compassview.library.widget.CompassView;
/**
* @author Ludovic Roland
* @since 2016.07.16
*/
public final class DemoActivity
extends CompassSensorActivity
{
public static final class ObjectAdapter
extends ArrayAdapter<Location>
{
private Location userLocation;
private CompassSensorManager compassSensorManager;
public ObjectAdapter(Context context, Location userLocation, CompassSensorManager compassSensorManager)
{
super(context, R.layout.list_item);
this.userLocation = userLocation;
this.compassSensorManager = compassSensorManager;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
final ViewHolder viewHolder;
if (convertView == null)
{
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.titleView = (TextView) convertView.findViewById(R.id.titleView);
viewHolder.compassView = (CompassView) convertView.findViewById(R.id.compassView);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) convertView.getTag();
}
final Location itemLocation = getItem(position);
viewHolder.titleView.setText(itemLocation.getLatitude() + " - " + itemLocation.getLongitude());
viewHolder.compassView.initializeCompass(compassSensorManager, userLocation, itemLocation, R.drawable.arrow);
return convertView;
}
}
public static final class ViewHolder
{
public TextView titleView;
public CompassView compassView;
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
//Fake position : Paris
final Location userLocation = new Location("");
userLocation.setLatitude(48.856353);
userLocation.setLongitude(2.354765);
//Fake position : Brussels
final Location originObjectLocation = new Location("");
originObjectLocation.setLatitude(50.850169);
originObjectLocation.setLongitude(4.350014);
final ObjectAdapter objectAdapter = new ObjectAdapter(this, userLocation, compassSensorManager);
objectAdapter.add(originObjectLocation);
((ListView) findViewById(R.id.listView)).setAdapter(objectAdapter);
}
}