I\'m currently having an issue with using custom ListView adapters with the Holo.Light theme. Within the activities and fragments, any TextViews are displayed in the theme\'
You haven't posted any actual code, but since I've had exactly the same problem, I would guess that you are passing the wrong Context
to your custom adapter constructor.
I've been doing something like this (within my Fragment):
dataSource = new MyCursorAdapter(getActivity().getApplicationContext(), R.layout.myrow, data,
fields, new int[] { R.id.field1, R.id.field2 });
All I had to do to fix the problem, was to replace getActivity().getApplicationContext()
by getActivity()
:
dataSource = new MyCursorAdapter(getActivity(), R.layout.myrow, data,
fields, new int[] { R.id.field1, R.id.field2 });
And it started to work as expected.
MyCursorAdapter (extending SimpleCursorAdapter
) constructor:
public MyCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) { //... }
Yes, I had the same problem and reading what rockford posted I could solve it, don't be necessary to use getApplicationContext() when you're implementing an adapter.
Here is the code of my ListFragment class:
public class TipoProveedorFavoritoActivity extends ListFragment {
Context mContext;
MiApp myApp;
Usuario usuario;
ProgressDialog progressDialog;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
//getListView().setCacheColorHint(Color.BLACK);
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mContext = getActivity();
myApp = (MiApp)getActivity().getApplication();
usuario = myApp.usuario;
// Progress Dialog
progressDialog = new ProgressDialog(mContext);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("Espere...");
progressDialog.setProgress(0);
Log.d("usuario", String.valueOf(usuario.id));
ConsultaDB consulta = new ConsultaDB();
consulta.execute();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.tipoproveedorfavorito_activity, container, false);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
}
// Creamos la clase para el adaptador de los tipos de proveedores
public static class TipoProveedorArrayAdapter extends ArrayAdapter<TipoProveedor>
{
public Context context;
public List<TipoProveedor> listaTipoProveedor;
public TipoProveedorArrayAdapter(Context context,List<TipoProveedor> listaTipoProveedor){
super(context, R.layout.tipoproveedorfavorito_activity,listaTipoProveedor);
this.context = context;
this.listaTipoProveedor = listaTipoProveedor;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view;
if(convertView==null){
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.tipoproveedor_content, parent,false);
final ViewHolder holder = new ViewHolder();
//holder.txtId=(TextView)view.findViewById(R.id.txtId);
holder.txtTipoProveedor=(TextView)view.findViewById(R.id.txtTipoProveedor);
view.setTag(holder);
holder.txtTipoProveedor.setTag(listaTipoProveedor.get(position));
}else{
view=convertView;
ViewHolder holder2 = (ViewHolder)view.getTag();
holder2.txtTipoProveedor.setTag(listaTipoProveedor.get(position));
}
ViewHolder holder = (ViewHolder)view.getTag();
TipoProveedor tipoProveedor = listaTipoProveedor.get(position);
//holder.txtId.setText(String.valueOf(tipoProveedor.id) );
holder.txtTipoProveedor.setText(tipoProveedor.tipoProveedor);
return view;
}
private class ViewHolder{
//public TextView txtId;
public TextView txtTipoProveedor;
}
}
private class ConsultaDB extends AsyncTask<Void, Integer, TipoProveedorArrayAdapter>{
@Override
protected void onPostExecute(TipoProveedorArrayAdapter result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
setListAdapter(result);
progressDialog.dismiss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progressDialog.show();
}
@Override
protected TipoProveedorArrayAdapter doInBackground(Void... params) {
// TODO Auto-generated method stub
String SQL = "SELECT t2.tipoProveedor AS id,t3.descripcion From Favoritos t1 " +
"INNER JOIN Proveedor t2 ON t2.id = t1.idProveedor " +
"INNER JOIN TipoProveedor t3 ON t3.id = t2.tipoProveedor " +
"Where t1.idUsuario = ? GROUP BY t2.tipoProveedor,t3.descripcion ORDER BY t2.tipoProveedor";
UtilDB db = UtilDB.GetUtilDb(mContext);
db.openDataBase();
Cursor cursor = db.getDataBase().rawQuery(SQL,new String[]{String.valueOf(usuario.id)});
//Cursor cursor = db.getDataBase().rawQuery(SQL,null);
List<TipoProveedor> tipoProveedor = new ArrayList<TipoProveedor>();
while(cursor.moveToNext()){
long id = cursor.getLong(cursor.getColumnIndex("id"));
String descripcion = cursor.getString(cursor.getColumnIndex("descripcion"));
TipoProveedor tp = new TipoProveedor();
tp.id=id;
tp.tipoProveedor=descripcion;
tipoProveedor.add(tp);
}
cursor.close();
db.close();
TipoProveedorArrayAdapter adapter = new TipoProveedorArrayAdapter(mContext, tipoProveedor);
//setListAdapter(adapter);
return adapter;
}
}
}