Tecnologia do Blogger.
RSS

[androidbrasil-dev] Carregar mapFragment dentro de um adapter

Boa tarde a todos,

Estou com uma dúvida a respeito de como implementar um mapa numa lista com adapter...segue a descrição:

1 - Tenho uma activity principal, no caso DetalheClienteActivity extends ListActivity, que consome um serviço e lista as empresas...

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detalhe_cliente);

        context = getApplicationContext();
   
         // CONSULTA AO SERVIÇO =====================================================================

        Intent intent = getIntent();
        Bundle args = intent.getExtras();

        codigoCliente = args.getString("codigoCliente");
        digitoCliente = args.getString("digitoCliente");

        url = "www.meuservico.com";

        Log.e("url", url);

        itensLista = new ArrayList<Item>();
        adapter = new Adapter_Item_DetalheCliente(DetalheClienteActivity.this,itensLista);
        setListAdapter(adapter);

        new GetCliente().execute();

        //==========================================================================================
  
    private class GetCliente extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Showing progress dialog
            pDialog = new ProgressDialog(DetalheClienteActivity.this);
            pDialog.setMessage("Por Favor Aguarde...");
            pDialog.setCancelable(false);
            pDialog.show();

        }

        @Override
        protected Void doInBackground(Void... arg0) {
            // Creating service handler class instance
            ServiceHandler sh = new ServiceHandler();

            // Making a request to url and getting response
            String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

            Log.d("Response: ", "> " + jsonStr);

            if (jsonStr != null) try {
                JSONObject jsonObj = new JSONObject(jsonStr);


                //JSONObject c = jsonObj.getJSONObject("");

                url_logo = jsonObj.getString("url_logo");
                fantasia = jsonObj.getString("fantasia");
                endereco = jsonObj.getString("endereco");
                String numero = jsonObj.getString("numero");
                String bairro = jsonObj.getString("bairro");
                String uf = jsonObj.getString("uf");
                fones = jsonObj.getString("fones");

                // TRATAMENTO DAS STRINGS DE ENDERECO ==================================

                endereco = endereco.trim();
                numero = numero.trim();
                bairro = bairro.trim();
                uf = uf.trim();

                StringBuilder sb = new StringBuilder();
                sb.append(endereco).append(",");
                sb.append(numero).append("-");
                sb.append(bairro).append(",");
                sb.append(uf);

                String enderecoCompleto = sb.toString();

                //======================================================================

                lista_telefone = jsonObj.getString("lista_telefone");
                String imagem_urls = jsonObj.getString("imagem_urls");

                horario = jsonObj.getString("horario");
                horario = horario.trim();

                semana = jsonObj.getString("semana");
                semana = semana.trim();

                feriado = jsonObj.getString("feriado");
                feriado = feriado.trim();

                sabado = jsonObj.getString("sabado");
                sabado = sabado.trim();

                domingo = jsonObj.getString("domingo");
                domingo = domingo.trim();

                latitude = jsonObj.getString("latitude");
                longitude = jsonObj.getString("longitude");

                referencia = jsonObj.getString("referencia");

                formapagamento = jsonObj.getString("formapagamento");

                site = jsonObj.getString("site");
                email = jsonObj.getString("email");

                String atividadesCliente = jsonObj.getString("atividades");

                Item.Item_Cliente_Detalhe item = new Item.Item_Cliente_Detalhe(
                        url_logo, fantasia, enderecoCompleto, fones, descricao, horario,
                        formapagamento, referencia, site, email, atividadesCliente, categoria,
                        latitude, longitude, semana, feriado, sabado, domingo, imagem_urls,
                        promo_app, promo_app_titulo, lista_telefone
                );
                itensLista.add(item);

            } catch (JSONException e) {
                e.printStackTrace();
            }
            else {
                Log.e("ServiceHandler", "Não Foi Possível Acessar a URL - Noticias");
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (pDialog.isShowing())
                pDialog.dismiss();

            adapter.notifyDataSetChanged();

        }

    }

2 - seu respectivo layout...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:descendantFocusability="beforeDescendants">

    <android.support.v7.widget.Toolbar
        android:id="@+id/tb_main"
        android:layout_height="@dimen/altura_header_interno"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:layout_alignParentLeft="true"
        android:background="@drawable/cabecalho_menor"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" >

    </android.support.v7.widget.Toolbar>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:longClickable="false" />

    </LinearLayout>

</LinearLayout>

3 - O adapter...

convertView = mInflater.inflate(R.layout.detalhe_cliente, null);

double latitudeTratada = Double.parseDouble(latitude);
double longitudeTratada = Double.parseDouble(longitude);

LatLng CLIENTE = new LatLng(latitudeTratada, longitudeTratada);

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

map.getUiSettings().setAllGesturesEnabled(true);
map.setMyLocationEnabled(false);

Marker marca_cliente = map.addMarker(new MarkerOptions().position(CLIENTE).title(fantasia));

 // Move the camera instantly to hamburg with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(CLIENTE, 18));

// Zoom in, animating the camera.
 map.animateCamera(CameraUpdateFactory.zoomTo(16), 2000, null);

4 - layout do adapter...

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="190dp"
android:layout_marginTop="5dp">

<fragment
  android:id="@+id/mapDetalheCliente"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.MapFragment" />
</LinearLayout>

Já tentei de várias formas instanciar, mas sempre recebo um NullPointerException...

Desde já agradeço a ajuda de todos!

Flws!














--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário