Like the title says, I want to make a ViewPager
which contains two sections:
1- a Listview
(name of the places to go with PHP / MySQL / JSON)
2- and a GoogleMap
with Markers
depending of what you select in point 1
So, I have this code for a ListView and a second code for the GoogleMap with a location Button. I want to merge them in a ViewPager but I don't figure out how to make this possible. See my code below:
google class:
package com.bla;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
//extends FragmentActivity
public class google extends FragmentActivity implements LocationListener {
Button btnShowLocation;
// GPSTracker class
GPSTracker gps;
// GoogleMap googleMap;
LatLng myPosition;
private SupportMapFragment map;
private GoogleMap mMapView;
// add all necessary things
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google);
// if Google Play Services are available then
// Getting reference to the SupportMapFragment of activity_main.xml
// SIRVE ... SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
/* fm = SupportMapFragment.newInstance();
FragmentTransaction fragmentTransaction =
getChildFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.map, fm);
fragmentTransaction.commit(); */
// SupportMapFragment fm = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
FragmentManager fm = getSupportFragmentManager();
map = (SupportMapFragment) fm.findFragmentById(R.id.map);
if (map == null) {
map = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map, map).commit();
}
// GoogleMap = mMapFragment.getMap();
// Getting GoogleMap object from the fragment
// mMapView = fm.getMap();
mMapView = map.getMap();
// Enabling MyLocation Layer of Google Map
mMapView.setMyLocationEnabled(true);
// Getting LocationManager object from System Service LOCATION_SERVICE
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// Creating a criteria object to retrieve provider
Criteria criteria = new Criteria();
// Getting the name of the best provider
String provider = locationManager.getBestProvider(criteria, true);
// Getting Current Location
Location location = locationManager.getLastKnownLocation(provider);
if(location!=null){
// Getting latitude of the current location
double latitude = location.getLatitude();
// Getting longitude of the current location
double longitude = location.getLongitude();
// Creating a LatLng object for the current location
LatLng latLng = new LatLng(latitude, longitude);
myPosition = new LatLng(latitude, longitude);
mMapView.addMarker(new MarkerOptions().position(myPosition).title("Start"));
}
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
}
listview class:
package com.example.mysqltest;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.widget.Button;
import com.example.mysqltest.R;
import com.viewpagerindicator.TabPageIndicator;
public class titlepager extends Activity {
// GoogleMap googleMap;
LatLng myPosition;
private SupportMapFragment map;
private GoogleMap mMapView;
//these are the titles that will appear on the "tabs"
final String[] page_titles = new String[]{"Home", "Me"};
//this will go the description TextView
final String[] desc = new String[]{
"Aqui ira el listview ",
"Aqui iraaa el mapa :D ",
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.title);
//Instantiating the adapter
GiloAdapter mAdapter = new GiloAdapter(this);
//instantiate the Views
ViewPager mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
TabPageIndicator mIndicator = (TabPageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
private class GiloAdapter extends PagerAdapter{
Context context;
public GiloAdapter(Context c){
this.context = c;
}
//This is the number of pages -- 5
@Override
public int getCount() {
// TODO Auto-generated method stub
return page_titles.length;
}
@Override
public boolean isViewFromObject(View v, Object o) {
// TODO Auto-generated method stub
return v.equals(o);
}
//This is the title of the page that will apppear on the "tab"
public CharSequence getPageTitle(int position) {
return page_titles[position];
}
//This is where all the magic happen
public Object instantiateItem(View pager, int position) {
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.page, null, false);
View v2 = inflater.inflate(R.layout.page2, null, false);
TextView title = (TextView)v.findViewById(R.id.tvTitle);
TextView description = (TextView) v.findViewById(R.id.tvdesc);
title.setText(page_titles[position]);
description.setText(desc[position]);
//This is very important
( (ViewPager) pager ).addView( v, 0 );
( (ViewPager) pager ).addView( v2, 1 );
return v;
}
@Override
public void destroyItem(View pager, int position, Object view) {
((ViewPager) pager).removeView((View) view);
}
@Override
public void finishUpdate(View view) {
}
@Override
public void restoreState(Parcelable p, ClassLoader c) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View view) {
}
}
}
Is there any options to merge these classes? Make a switch for every page and which layout to charge? I'm newer in Android, can you help me to know how do it?