Bom Dia,
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.");
http://stackoverflow.com/questions/7789875/how-to-set-background-for-textview-in-code
TextView
API JAVA
txt.setBackgroundColor(Color.parseColor("#BABABA"));
ou
txt.setBackgroundColor(Color.RED);
ListView
http://stackoverflow.com/questions/11553156/setting-the-background-color-of-a-listview-through-xml
API JAVA
ListView mainListView;
mainListView = (ListView) findViewById( R.id.listView1 );
mainListView.setBackgroundColor(Color.BLACK);
XML
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:layout_centerHorizontal="true"
android:layout_centerVertical=“true” >
Boas praticas
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="orange">#ff5500</color>
</resources>
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?
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?
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.
listView.setEmptyView(findViewById(R.id.emptyElement));
http://stackoverflow.com/questions/3771568/showing-empty-view-when-listview-is-empty
Pode parecer gambiarra, mas…
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
1 curtida
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
package com.example.android.listadelivros;
import android.app.LoaderManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
public class ExibirListaLivros extends AppCompatActivity
implements LoaderManager.LoaderCallbacks<List<DadosLivro>> {
private TextView mEstadoVazioTextView;
public static String consultaDadoInformado = null;
private static final int DADOSLIVROS_ID_LOADER = 1;
private DadosLivrosAdapter mAdapter;
public static String removeAcento(String str) {
str = java.text.Normalizer.normalize(str, java.text.Normalizer.Form.NFD);
str = str.replaceAll("[^\\p{ASCII}]", "");
return str;
}
public static String encode(String valorDigitado) {
try {
return consultaDadoInformado = URLEncoder.encode(valorDigitado, "utf-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
private String googleLivroURL = "https://www.googleapis.com/books/v1/volumes?q="
+ consultaDadoInformado;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
ListView listview = (ListView) findViewById(R.id.lista);
mAdapter = new DadosLivrosAdapter(this, new ArrayList<DadosLivro>());
listview.setAdapter(mAdapter);
mEstadoVazioTextView = (TextView) findViewById(R.id.visualizacaoVazia);
listview.setEmptyView(mEstadoVazioTextView);
ConnectivityManager verificarConexaoInternet = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo informacaoRede = verificarConexaoInternet.getActiveNetworkInfo();
if (informacaoRede != null && informacaoRede.isConnected()) {
final LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(DADOSLIVROS_ID_LOADER, null, this);
} else {
View indicadorProcessamento = findViewById(R.id.indicadorProcessamento);
indicadorProcessamento.setVisibility(View.GONE);
mEstadoVazioTextView.setText("Nenhuma rede disponível!\n\nVerifique a " +
"conexão e tente novamente");
}
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View visualizacao,
int posicao, long l) {
DadosLivro livroClicado = mAdapter.getItem(posicao);
Uri informacoesLivroUri = Uri.parse(livroClicado.getComprarLivro().trim());
Intent siteGoogleLivros = new Intent(Intent.ACTION_VIEW, informacoesLivroUri);
if (siteGoogleLivros.resolveActivity(getPackageManager()) != null) {
startActivity(siteGoogleLivros);
}
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
startActivity(new Intent(this, MainActivity.class));
finishAffinity();
break;
default:break;
}
return true;
}
@Override
public android.content.Loader<List<DadosLivro>> onCreateLoader(int i, Bundle bundle) {
return new DadosLivrosLoader(this, googleLivroURL);
}
@Override
public void onLoadFinished(android.content.Loader<List<DadosLivro>> loader, List<DadosLivro>
informacoesLivros) {
View indicadorProcessamento = 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);
}
}
@Override
public void onLoaderReset(android.content.Loader<List<DadosLivro>> loader) {
mAdapter.clear();
}
}
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 
Não havia pensado nisso, era uma coisa idiota, deixei a variável global e tudo certo, burrice rs Obrigada pela ajuda rs