|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Problema listview.SetemptyView
saludos gente , tengo un problema con un list que no consigo establecer un view para cuando no hay datos , ya lo he echo otras veces pero en este caso no encuentro porque no lo muestra aunque parece todo estar bien.
mi código: Código:
this.listView = ((ListView) findViewById(R.id.listView1)); RelativeLayout ly = (RelativeLayout)findViewById(R.layout.empty_list); this.listView.setEmptyView(ly); Código:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="150dp"
android:src="@drawable/ic_nodata" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView1"
android:layout_centerHorizontal="true"
android:text="No Data"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColorHint="@color/LightGrey"
android:textColorLink="@color/DarkGray"
android:textStyle="bold" />
</RelativeLayout>
Código:
public class NewPostAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public ArrayList<HashMap<String, String>> data;
private Context con;
static Typeface face;
public NewPostAdapter(Context context,
ArrayList<HashMap<String, String>> data) {
mInflater = LayoutInflater.from(context);
this.data = data;
this.con = context;
}
public HashMap<String, String> getItem(int position) {
return data.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item_listview, null);
holder.txttitle = (TextView) convertView.findViewById(R.id.title);
holder.txtlastpostedname = (TextView) convertView
.findViewById(R.id.lastpostedname);
holder.txtnpostlast = (TextView) convertView
.findViewById(R.id.npostlast);
holder.txtnpostdate = (TextView) convertView
.findViewById(R.id.lastpostdate);
holder.txtforum = (TextView) convertView.findViewById(R.id.forum);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
// holder = (ViewHolder) convertView.getTag();
}
holder.txttitle.setText(data.get(position).get("title"));
// holder.txttitle.setTypeface(face);
holder.txtlastpostedname.setText("Author: "
+ data.get(position).get("postedname"));
holder.txtnpostlast.setText(data.get(position).get("number"));
holder.txtnpostdate.setText(data.get(position).get("datetime"));
holder.txtforum.setText(data.get(position).get("forum"));
return convertView;
}
static class ViewHolder {
TextView txttitle;
TextView txtlastpostedname;
TextView txtnpostlast;
TextView txtnpostdate;
TextView txtforum;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
}
|
|
|
|
#2
|
||||
|
||||
|
Pues sobre el codigo que has puesto, varias cosas:
1.- Código:
RelativeLayout ly = (RelativeLayout)findViewById(R.layout.empty_list); Bien,así no es como se asigna un objeto de RelativeLayout. Si te fijas, el método que utilizas es findViewById, y lo que tu le estás pasando es un layout, por tanto ahí es posible que no te lo encuentre. Tendrías que ponerle un id al <RelativeLayout padre y entonces pasarle ese id 2.- La forma más fácil de tener un emptyView es, en el propio lugar donde tengas el ListView, poner otra View debajo (que será el emptyView) con android:visibility:GONE Y cuando vayas a crear el adapter, si el arrayList tiene 0 elementos, simplemente tendrías que: Código:
listView.setVisibility(View.GONE); emptyView.setVisibility(View.VISIBLE);
__________________
|
| Gracias de parte de: | ||
|
#5
|
||||
|
||||
|
Porque hago un ViewType para cuando getCount es = 0.
Así cuando hago el getView se el Layout que debo inflar. En el fondo es lo mismo, pero queda más limpio. Además que en los casos donde se me ha dado son como mínimo 3 tipos de fila, así aprovecho e introduzco el 4º tipo para la lista vacía. |
|
#6
|
||||
|
||||
|
Bien ya lo solucione , gracias a todos
|
|
#7
|
||||
|
||||
|
__________________
Espartano Numero 2
![]()
|
|
#8
|
||||
|
||||
|
Si es verdad , he echo exactamente lo que comenta Dexafree en el post Nº 2 , gracias de nuevo.
|
![]() |
Estás aquí
|
||||||
|
||||||