Utilizando BaseAdapter Para Personalização Completa da ListView

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Android /Utilizando BaseAdapter Para Personalização Completa da ListView

Utilizando BaseAdapter Para Personalização Completa da ListView

Vinícius Thiengo16/12/2013
(8188) (51) (18) (1)
Go-ahead
"Se você está planejando em fazer alguma coisa diferente, você será criticado por causa disso. Tenha fé de que o que você está fazendo é o certo e bloqueie qualquer negatividade."
Herb Kelleher
Código limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas598
Comprar Livro
Conteúdo Exclusivo
Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Opa! Blz?!

Esse vídeo é um pouci mais longo, porém acho que pode ser muito util se você está pensando em trabalhar com listas ou apenas aprender a mexer com listas em Android, alias considero esse o post mais importante se você quer mexer com listas. Nesse vídeo mostro como personalizar ainda mais uma ListView utilizando a herança da classe BaseAdapter em uma classe personalizada criada por nós.

Note que inevitavelmente entro no contexto da classe LayoutInflater, porém somente falarei mais afundo dessa classe em posts futuros, pois ela é um pouco mais avançada, mas se você já quiser ir se aprofundando nessa classe que é extremamente útil, pode acessar o link a seguir do próprio site de desenvolvedores do Android:

Classe LayoutInflater

Acho que é isso ae, vou deixar você assistir ao vídeo.

Classe BaseAdapter

O link para download do projeto se encontra logo abaixo no post.

Compartilhe, comente! Vlw.

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

Entendendo a Thread Principal de Uma APP AndroidEntendendo a Thread Principal de Uma APP AndroidAndroid
Entendendo e Utilizando ListActivity no AndroidEntendendo e Utilizando ListActivity no AndroidAndroid
ListView: Entendendo e Utilizando no AndroidListView: Entendendo e Utilizando no AndroidAndroid
SimpleAdapter no ListView, Entendendo e Utilizando no AndroidSimpleAdapter no ListView, Entendendo e Utilizando no AndroidAndroid

Compartilhar

Comentários Facebook (21)

Comentários Blog (30)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
09/05/2017
Thiengo, primeiramente parabéns sou novo por aqui e tenho acompanhado seus vídeos para começar a desenvolver em android.

Tive um problema ao usar o BaseAdapter com listview, no método getView() quando uso mais itens do que aparece em meu celular o valor do position reinicia a contagem, tem alguma forma de utilizar o valor contando todos os itens da lista e não reiniciar quando a contagem quando apresenta valores da lista que estavam ocultos na tela?
Responder
Vinícius Thiengo (1) (0)
09/05/2017
Renato, tudo bem?

Aparentemente o parâmetro position do método getView() não está repetindo, isso pois se forneceu uma lista de objetos ao adapter e em getCount() forneceu o tamanho dela, o parâmetro position vai respeitar esse tamanho.

O que pode estar acontecendo é que a lógica de negócio dentro deste método está errada, digo, não está com o padrão ViewHolder ou se está, não está preenchendo o layout corretamente.

Se possível, revise todo o adapter, principalmente o método getView(). Se mesmo assim nada, coloque o código de seu adapter no PasteBin (https://pastebin.com/) e compartilhe o URI do código aqui, assim poderia ver o que pode estar ocorrendo. Abraço.
Responder
12/05/2017
Vinícius muito obrigado, havia um erro na implementação do padrão ViewHolder, ao corrigir funcionou conforme o esperado. Agora já me sinto livre para avançar aos próximos vídeos xD
Responder
25/09/2016
Fala Thiengo.
Cara.. muito bom o vídeo ( para variar...rs)
Consigo inflar a view sem problemas na listview, mas como faço pra setar o texto de um textview que está no mesmo layout do listview com valores do adapter? Uma soma dos Itens por exemplo...
Obrigado!
Responder
Vinícius Thiengo (0) (0)
26/09/2016
Luciano, blz?
Tem várias maneiras de fazer isso. Uma simples é criar um método publico simples na Activity que se encontra o ListView.

Com o contexto passado ao adapter, aplique o cast:

SuaActivity suaActivity = (SuaActivity) context;

Depois acesse o método no getView(), por exemplo:

suaActivity.somaValue( valor );

Assim, em SuaActivity, vc pode utilizar uma variável de instância que será atualizada com a soma ao valor passado como argumento:

...
public void somaValue( TipoValue value ){
    this.value += value;
    seuTextView.setText( ""+this.value );
}
...

Veja se assim funciona. Abraço
Responder
Daniel Tibúrcio Silva Filho (1) (0)
14/06/2016
Consegui colocar a figura, mas ficou um espaço em branco à direita dos resultados
Responder
Vinícius Thiengo (0) (0)
18/06/2016
Daniel, respondido nos comentários do Facebook. Abraço
Responder
15/06/2015
Thiengo, muito bons seus videos, parabéns!! estão me ajudando bastante em meu atual projeto.. Estou tentando implementar uma listview seguindo o exemplo do vídeo, mas não estou conseguindo faze-la exibir todos itens que foram passados pelo adapter.. somente uma linha está sendo exibida. Segue a parte onde o array é passado para o adapter:
JSONArray ja;

                                    ja = response.getJSONArray("atividades");
                                    ArrayList ativi = new ArrayList();
                                    for(int i = 0, tam = ja.length(); i < tam; i++) {
                                        Atividades atv = new Atividades();

                                        ordem = ja.getJSONObject(i).getString("ordem");
                                        nomeexercicios = ja.getJSONObject(i).getString("nomeexercicios");
                                        qtdserie = ja.getJSONObject(i).getString("qtdserie");
                                        numrepeticoes = ja.getJSONObject(i).getString("numrepeticoes");
                                        carga = ja.getJSONObject(i).getString("carga");
                                        nomeequipamentos = ja.getJSONObject(i).getString("nomeequipamentos");
                                        status_ativ = ja.getJSONObject(i).getString("status_ativ");

                                        atv.setOrdem(ordem);
                                        atv.setNomeexercicios(nomeexercicios);
                                        atv.setQtdserie(qtdserie);
                                        atv.setNumrepeticoes(numrepeticoes);
                                        atv.setCarga(carga);
                                        atv.setNomeequipamentos(nomeequipamentos);
                                        atv.setStatus_ativ(status_ativ);

                                        ativi.add(new Atividades(ordem,nomeexercicios,qtdserie,numrepeticoes,carga,nomeequipamentos,status_ativ));
                                    }
                                    ListView lv = (ListView) getView().findViewById(R.id.lvList);
                                    lv.setAdapter(new PernasAdapter(getActivity(), ativi));
No caso, os dados vem de um json e deste é passado para o array. getview do adapter:
@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        Atividades atividades = lista.get(position);
        View layout;

        if(convertView == null){
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            layout = inflater.inflate(R.layout.row, null);
        }
        else{
            layout = convertView;
        }
            TextView ordem = (TextView) layout.findViewById(R.id.tvOrdem);
            TextView nomeexercicios = (TextView) layout.findViewById(R.id.tvExercicio);
            TextView qtdserie = (TextView) layout.findViewById(R.id.tvSerie);
            TextView numrepeticoes = (TextView) layout.findViewById(R.id.tvRepeticoes);
            TextView carga = (TextView) layout.findViewById(R.id.tvCarga);
            TextView nomeequipamentos = (TextView) layout.findViewById(R.id.tvEquipamentos);
            Button status_ativ = (Button) layout.findViewById(R.id.btStatus);

            ordem.setText(atividades.getOrdem());
            nomeexercicios.setText(atividades.getNomeexercicios());
            qtdserie.setText(atividades.getQtdserie());
            numrepeticoes.setText(atividades.getNumrepeticoes());
            carga.setText(atividades.getCarga());
            nomeequipamentos.setText(atividades.getNomeequipamentos());

            if (position % 2 == 0) {
                layout.setBackgroundColor(Color.LTGRAY);
            }

        return layout;
    }
Responder
Vinícius Thiengo (0) (0)
16/06/2015
Fala Renan, blz?
Verifique com o LogCat se sua lista, logo quando enviada ao adapter, tem mais do que apenas um elemento. Verifique tb se o ListView está com um android:layout_height que permite apresentar mais de uma linha, coloque um background vermelho no ListView que vc vai saber pelo tamanho do View tingido. Abraço
Responder
16/06/2015
Beleza!
Consegui! muito obrigado, Thiego. :D
O layout da ListView estava com uma altura que possibilitava apresentar apenas uma linha.
E mais uma vez, parabéns pelo trabalho, o conteúdo que você disponibiliza aqui é de excelente qualidade e ajuda bastante.
Responder
Andre Luiz (0) (0)
13/03/2015
Olá Thiengo, tudo bem?
Me ajuda com uma coisa. Como consigo personalizar uma listview trabalhando com fragment ?
Estou querendo criar uma custom listview simples,com uma foto e duas textview,porém, minha activity tem de ser "extends Fragment ", se eu mudar essa linha pra "ListFragment" ou qualquer outra, dá erro na minha activity anterior.
Ps:essa listview sera implementada numa tab usando fragment.
Desde já obrigado.
Responder
Vinícius Thiengo (0) (0)
13/03/2015
Fala Andre, blz?
Vc no caso faria a mesma coisa que fiz no vídeo dentro de uma Activity, porém vc faria isso dentro do método onCreateView() de seu fragment, se ainda não manja de fragment, dê uma olhada nesse vídeo (http://www.thiengo.com.br/fragments-no-android-trabalhando-com-multiplas-activities). Só uma observação, na verdade vc tem uma classe / fragment que extends Fragment. Para ser Activity ela teria um extends de Activity, ActivityActionBar, FragmentActivity, ... Dê uma olhada no vídeo de fragment e vê se consegue desenrolar. Outra coisa é utilizar o RecyclerView com um LayoutManager, ele é mt mais eficiente que o ListView e BaseAdapter, porém esse ainda não fiz vídeo sobre. Abraço
Responder
Andre Luiz (1) (0)
16/03/2015
Opa Thiengo. Entao, obrigado pela ajuda, acho que agora falta pouco. Minha Fragment ficou assim agora:
 package com.oneapp.tiradentes;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import java.util.ArrayList;

public class FragmentA extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.activity_main4, container, false);


        ArrayList carros = new ArrayList();

        for(int i = 0; i < 5; i++){

            Carro carro = new Carro();
            carro.setModelo("Carro "+(i + 1));
            carro.setMarca("Marca "+(i + 1));

            carros.add(carro);
        }

        ListView lv = (ListView) getView().findViewById(R.id.lv);
        lv.setAdapter(new CarroAdapter(this, carros));

        return rootView;
    }
}
na linha :
        lv.setAdapter(new CarroAdapter(this, carros)); 
está apresentando um erro e nao consigo rodar a app. o que está faltando eu modificar ? Mais uma vez obrigado.
Responder
Vinícius Thiengo (0) (0)
16/03/2015
André ao invés de utilizar new CarroAdapter(this, carros), coloque new CarroAdapter(getActivity(), carros), pois o contexto que vc está passando é o do Fragment quando o BaseAdapter está esperando pelo context da Activity. Abraço
Responder
Andre Luiz (1) (0)
16/03/2015
Perfeito Vinícius. Projetinho sem erros, porém quando mandei rodar, ele trava quando chamo a Fragment em questao. Esse é o logcat:
03-16 22:01:12.870    1052-1052/com.oneapp.tiradentes E/AndroidRuntime? FATAL EXCEPTION: main
    Process: com.oneapp.tiradentes, PID: 1052
    java.lang.NullPointerException
            at com.oneapp.tiradentes.FragmentE.onCreateView(FragmentE.java:29)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
            at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
            at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
            at android.view.View.measure(View.java:17331)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at android.view.View.measure(View.java:17331)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
            at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
            at android.view.View.measure(View.java:17331)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at android.view.View.measure(View.java:17331)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
            at android.view.View.measure(View.java:17331)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2548)
            at android.view.View.measure(View.java:17331)
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2279)
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1393)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1592)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1251)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6540)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:813)
            at android.view.Choreographer.doCallbacks(Choreographer.java:613)
            at android.view.Choreographer.doFrame(Choreographer.java:583)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:799)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5593)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)
Será que ainda consegue me ajudar ?
Responder
Vinícius Thiengo (0) (0)
17/03/2015
André, aparentemente sua linha 29 em com.oneapp.tiradentes.FragmentE.onCreateView está com uma variável null que vc está tentando acessar como se fosse um objeto completo. O que há na linha 29 desse método desse fragment? Abraço
Responder
Andre Luiz (1) (0)
17/03/2015
Oi Thiengo, cara, desculpa te ocupar tanto, mas obrigado por estar me ajudando. Minha FragmentE é essa:

package com.oneapp.tiradentes;

import java.util.ArrayList;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class FragmentE extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View View = inflater.inflate(R.layout.activity_main4, container, false);


        ListView lista = (ListView) getView().findViewById(R.id.listadirectivos);
        //ListView lv = (ListView) getView().findViewById(R.id.lv);
        ArrayList arraydir = new ArrayList();
        //lista.setOnItemClickListener(chamaAtividades());
        Directivo directivo;


        // Introduzco los datos
        directivo = new Directivo(getResources().getDrawable(R.drawable.ambulance8), "Animed Pet Shop", "Atendimento veterinário...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.briefcase11), "Kamp Imóveis", "Entregue seu imóvel para...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.camera46), "Luziana Lanna Idiomas", "Pessoas diferentes precisam...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.earth17), "M. Helena Imóveis", "Vendas e Aluguéis de...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.fork9), "Paty Baby", "A loja especializada no...");
        arraydir.add(directivo);





        // Creo el adapter personalizado
        AdapterDirectivos adapter = new AdapterDirectivos(getActivity(), arraydir);


        // Lo aplico
        lista.setAdapter(adapter);


        return View;

    }



  /*  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }   */

}

package com.oneapp.tiradentes;

import java.util.ArrayList;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class FragmentE extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View View = inflater.inflate(R.layout.activity_main4, container, false);


        ListView lista = (ListView) getView().findViewById(R.id.listadirectivos);
        //ListView lv = (ListView) getView().findViewById(R.id.lv);
        ArrayList arraydir = new ArrayList();
        //lista.setOnItemClickListener(chamaAtividades());
        Directivo directivo;


        // Introduzco los datos
        directivo = new Directivo(getResources().getDrawable(R.drawable.ambulance8), "Animed Pet Shop", "Atendimento veterinário...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.briefcase11), "Kamp Imóveis", "Entregue seu imóvel para...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.camera46), "Luziana Lanna Idiomas", "Pessoas diferentes precisam...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.earth17), "M. Helena Imóveis", "Vendas e Aluguéis de...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.fork9), "Paty Baby", "A loja especializada no...");
        arraydir.add(directivo);





        // Creo el adapter personalizado
        AdapterDirectivos adapter = new AdapterDirectivos(getActivity(), arraydir);


        // Lo aplico
        lista.setAdapter(adapter);


        return View;

    }



  /*  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }   */

}
package com.oneapp.tiradentes;

import java.util.ArrayList;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class FragmentE extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View View = inflater.inflate(R.layout.activity_main4, container, false);


        ListView lista = (ListView) getView().findViewById(R.id.listadirectivos);
        //ListView lv = (ListView) getView().findViewById(R.id.lv);
        ArrayList arraydir = new ArrayList();
        //lista.setOnItemClickListener(chamaAtividades());
        Directivo directivo;


        // Introduzco los datos
        directivo = new Directivo(getResources().getDrawable(R.drawable.ambulance8), "Animed Pet Shop", "Atendimento veterinário...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.briefcase11), "Kamp Imóveis", "Entregue seu imóvel para...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.camera46), "Luziana Lanna Idiomas", "Pessoas diferentes precisam...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.earth17), "M. Helena Imóveis", "Vendas e Aluguéis de...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.fork9), "Paty Baby", "A loja especializada no...");
        arraydir.add(directivo);





        // Creo el adapter personalizado
        AdapterDirectivos adapter = new AdapterDirectivos(getActivity(), arraydir);


        // Lo aplico
        lista.setAdapter(adapter);


        return View;

    }



  /*  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }   */

}
package com.oneapp.tiradentes;

import java.util.ArrayList;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class FragmentE extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View View = inflater.inflate(R.layout.activity_main4, container, false);


        ListView lista = (ListView) getView().findViewById(R.id.listadirectivos);
        //ListView lv = (ListView) getView().findViewById(R.id.lv);
        ArrayList arraydir = new ArrayList();
        //lista.setOnItemClickListener(chamaAtividades());
        Directivo directivo;


        // Introduzco los datos
        directivo = new Directivo(getResources().getDrawable(R.drawable.ambulance8), "Animed Pet Shop", "Atendimento veterinário...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.briefcase11), "Kamp Imóveis", "Entregue seu imóvel para...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.camera46), "Luziana Lanna Idiomas", "Pessoas diferentes precisam...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.earth17), "M. Helena Imóveis", "Vendas e Aluguéis de...");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.fork9), "Paty Baby", "A loja especializada no...");
        arraydir.add(directivo);





        // Creo el adapter personalizado
        AdapterDirectivos adapter = new AdapterDirectivos(getActivity(), arraydir);


        // Lo aplico
        lista.setAdapter(adapter);


        return View;

    }



  /*  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }   */

}

A linha 29 parece ser essa:
        ListView lista = (ListView) getView().findViewById(R.id.listadirectivos);

Abraço.
Responder
Vinícius Thiengo (0) (0)
18/03/2015
André, ao invés de utilizar:

ListView lista = (ListView) getView().findViewById(...);

utilize:

ListView lista = (ListView) View.findViewById(...);

porém certifique-se de que a referencia R.id.listadirectivos existe no layoutR.layout.activity_main4. Faça isso para todos os acessos a views dentro de seus onCreateView() dos fragments. Depois veja se roda sem problemas. Abraço
Responder
Andre Luiz (1) (0)
19/03/2015
Perfeito Thiengo, só queria agradecer mesmo, muito obrigado,funcionou perfeitamente. Se eu quiser arredondar as bordas dessa imagem da listview eu consigo com bootstrap ? Mudo via xml ou tenho que mecher no código?
Abraços Thiengo, muito obrigado.
Responder
Vinícius Thiengo (0) (0)
19/03/2015
Andre, com o bootstrap provavelmente não, mas consegue realizar isso no xml mesmo como no link a seguir (http://stackoverflow.com/questions/9837145/how-to-make-a-rounded-corners-for-an-image-in-image-view-using-xml-layout-in-and). Com o Picasso Lib e o Makeramen RoundedImageView Lib vc tem mais poder de fogo para deixar a imagem redonda mesmo. Abraço
Responder
Andre Luiz (1) (0)
19/03/2015
Valew Thiengo, sucesso pra voce. Me ajudou muito, consegui agora dar continuidade no meu projeto. Um grande abraco amigo e muito obrigado.
Responder
01/02/2015
Ol? Thiengo, precisava de uma ajuda. Como posso alimentar um listview quando clicar em um bot?o? A l?gica que estou usando ? quando clico no bot?o abre Dialog os dados do listview.  implementei como base esse seu exemplo mas n?o obtive sucesso dessa forma.
Responder
Vinícius Thiengo (0) (0)
02/02/2015
Fala Luis, blz?
Fiquei na dúvida, vc quer colocar mais dados no ListView ou quer apresentar os detalhes do item do ListView que foi clicado? Para apresentar os detalhes vc está em um caminho certo (mostrar no Dialog), mas há outras maneiras tb (como mostrar em outra Activity, por exemplo). De todas as maneiras de apresentar dados, vc pode passar ou via Intent, nesse caso sua classe de itens teria de implementar um Parcelable (tb, apenas mais uma maneira) ou passando pelo construotr, no caso do Dialog, por exemplo. Se a questão é alimentar o ListView, os dados viriam de onde? Imaginando que o usuário colocaria mais itens por um form que seria aberto via Dialog, coloque um botão de finalizar cadastro do Item e então utilizei o EventBus para informar ao ListView que há mais dados, então coloque esse novo item na lista que preenche o listView e chame o notifuDataSetChanged() do adapter que está vinculado ao listView para atualizar o ListView. Abraço
Responder
02/02/2015
Seria ao clicar em um botao
- Ira abrir um Dialog e dentro dele tera o listview com os dados do sqllite, pois nao quero usar o Intent prefiro que fica na main Activity.

Dêu pra entender ?
Responder
02/02/2015
Para simplificar, clico no botão "LISTAR" abre o Dialog e com os dados carregados do sqllite no listview.
Dêu pra entender ?
Responder
Vinícius Thiengo (0) (0)
03/02/2015
Luis, acho que entendi. Seu Dialog tem um construtor? Se não tiver crie um que receberá a lista que preencherá o listView, assim vc terá uma várivel dentro do Dialog que está referenciando a mesma list que está no Activity, se fizer alguma alteração nela dentro do Dialog essa alteração será na mesma lista que está no Activity tb. Isso? Abraço
Responder
03/02/2015
Obrigado. Vou corrigir o código.
Responder
02/08/2014
Muito Obrigado, valeu mesmo.
Como disse o colega acima, vai direto ao ponto e um codigo limpo. Parabens!
Responder
Wagner (2) (0)
01/04/2014
Valeu amigo, farei uns testes disso aí, mas a explicação tá muito boa e vc não enrola. Show de bola
Responder
Vinícius Thiengo (1) (0)
01/04/2014
Vlw Wagner, abraço
Responder