Existe alguma forma de customizar uma listView além do textView padrão? A tela fica vazia obviamente, mas gostaria de alterar a cor do background
mEstadoVazioTextView = (TextView) findViewById(R.id.visualizacaoVazia);
listview.setEmptyView(mEstadoVazioTextView);
mEstadoVazioTextView.setText("Nenhum livro encontrado!\n\nFavor verificar ortografia ou" +
" informar algum dado sobre o livro novamente.");
Preciso da alteração da cor de background apenas se a busca voltar vazia, alterando a cor do android:background="#FFFFFF", não alteraria toda minha lista qndo a resposta apresentar itens?
AlineRamos
Preciso da alteração da cor de background apenas se a busca voltar vazia, alterando a cor do android:background="#FFFFFF", não alteraria toda minha lista qndo a resposta apresentar itens?
jonathan.sky
Quando a listView estiver vazia ele ira trocar o fundo pela view que quiser. teve um comentário falando sobre stub, achei interessante, só não sei se ainda é aplicado em versões novas.
Eu deixo um TextView invisível no layout da forma que eu quero, quando eu faço o request e o resultado vier vazio eu tiro a invisibilidade desse TextView.
Se vier ao menos um resultado eu volto a tornar esse TextView invisível e apareço com a lista
AlineRamos
Olha, eu deixo um TextView dentro do layout do ListView, existe um método setEmptyView() que retorna esse textView da lista quando o resultado for vazio, dá uma olhada, mais fácil e menos gambi haha
O que eu preciso na verdade, é trocar a cor da tela qndo o resultado for vazio, pois meu adapter está carregado em um Loader fora do onCreate e não consigo referenciar a listView
packagecom.example.android.listadelivros;importandroid.app.LoaderManager;importandroid.content.Context;importandroid.content.Intent;importandroid.graphics.Color;importandroid.net.ConnectivityManager;importandroid.net.NetworkInfo;importandroid.net.Uri;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ListView;importandroid.widget.TextView;importjava.io.UnsupportedEncodingException;importjava.net.URLEncoder;importjava.util.ArrayList;importjava.util.List;publicclassExibirListaLivrosextendsAppCompatActivityimplementsLoaderManager.LoaderCallbacks<List<DadosLivro>>{privateTextViewmEstadoVazioTextView;publicstaticStringconsultaDadoInformado=null;privatestaticfinalintDADOSLIVROS_ID_LOADER=1;privateDadosLivrosAdaptermAdapter;publicstaticStringremoveAcento(Stringstr){str=java.text.Normalizer.normalize(str,java.text.Normalizer.Form.NFD);str=str.replaceAll("[^\\p{ASCII}]","");returnstr;}publicstaticStringencode(StringvalorDigitado){try{returnconsultaDadoInformado=URLEncoder.encode(valorDigitado,"utf-8");}catch(UnsupportedEncodingExceptione){thrownewRuntimeException(e);}}privateStringgoogleLivroURL="https://www.googleapis.com/books/v1/volumes?q="+consultaDadoInformado;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.list_view);getSupportActionBar().setDisplayHomeAsUpEnabled(true);getSupportActionBar().setHomeButtonEnabled(true);ListViewlistview=(ListView)findViewById(R.id.lista);mAdapter=newDadosLivrosAdapter(this,newArrayList<DadosLivro>());listview.setAdapter(mAdapter);mEstadoVazioTextView=(TextView)findViewById(R.id.visualizacaoVazia);listview.setEmptyView(mEstadoVazioTextView);ConnectivityManagerverificarConexaoInternet=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfoinformacaoRede=verificarConexaoInternet.getActiveNetworkInfo();if(informacaoRede!=null&&informacaoRede.isConnected()){finalLoaderManagerloaderManager=getLoaderManager();loaderManager.initLoader(DADOSLIVROS_ID_LOADER,null,this);}else{ViewindicadorProcessamento=findViewById(R.id.indicadorProcessamento);indicadorProcessamento.setVisibility(View.GONE);mEstadoVazioTextView.setText("Nenhuma rede disponível!\n\nVerifique a "+"conexão e tente novamente");}listview.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>adapterView,Viewvisualizacao,intposicao,longl){DadosLivrolivroClicado=mAdapter.getItem(posicao);UriinformacoesLivroUri=Uri.parse(livroClicado.getComprarLivro().trim());IntentsiteGoogleLivros=newIntent(Intent.ACTION_VIEW,informacoesLivroUri);if(siteGoogleLivros.resolveActivity(getPackageManager())!=null){startActivity(siteGoogleLivros);}}});}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseandroid.R.id.home:startActivity(newIntent(this,MainActivity.class));finishAffinity();break;default:break;}returntrue;}@Overridepublicandroid.content.Loader<List<DadosLivro>>onCreateLoader(inti,Bundlebundle){returnnewDadosLivrosLoader(this,googleLivroURL);}@OverridepublicvoidonLoadFinished(android.content.Loader<List<DadosLivro>>loader,List<DadosLivro>informacoesLivros){ViewindicadorProcessamento=findViewById(R.id.indicadorProcessamento);indicadorProcessamento.setVisibility(View.GONE);mEstadoVazioTextView.setBackgroundColor(Color.parseColor("#EEEEEE"));mEstadoVazioTextView.setText("Nenhum livro encontrado!\n\nFavor verificar ortografia ou"+" informar algum dado sobre o livro novamente.");mAdapter.clear();if(informacoesLivros!=null&&!informacoesLivros.isEmpty()){mAdapter.addAll(informacoesLivros);}}@OverridepublicvoidonLoaderReset(android.content.Loader<List<DadosLivro>>loader){mAdapter.clear();}}
AlineRamos
o problema é que minha lista é carregada fora do onCreate, assim não consigo referenciar o background dela, a variavel listView fica sem existir por estar fora do escopo Postei o código mais abaixo, dá uma olhada, obrigada
AlineRamos
Não havia pensado nisso, era uma coisa idiota, deixei a variável global e tudo certo, burrice rs Obrigada pela ajuda rs