Uso un paginator con alcuni Fragments
.Come utilizzare setEmptyView() con layout elenco personalizzato in ListFragment
Desidero visualizzare un messaggio quando non ci sono voci nell'elenco (Fragment
).
Ho provato a utilizzare Textview
con android:id="@id/android:empty
ma non funziona.
personalizzato codice layout della lista:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium" >
<TextView
android:id="@+id/label_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/padding_medium"
android:text="@string/label_value"
android:textColor="@android:color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/label_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/padding_medium"
android:text="@string/title_time"
android:textColor="@android:color/white"
android:textSize="16sp" />
</RelativeLayout>
Lista adattatore classe:
public class JournalAdapter extends ArrayAdapter<String> {
private final Context context;
private final List<String> values;
private final List<String> dates;
public JournalAdapter(Context context, List<String> values,
List<String> dates) {
super(context, R.layout.layout_journal_list, values);
this.context = context;
this.values = values;
this.dates = dates;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.layout_journal_list, parent, false);
TextView value = (TextView) rowView.findViewById(R.id.label_glucose);
TextView date = (TextView) rowView.findViewById(R.id.label_date);
value.setText(values.get(position));
date.setText(dates.get(position));
return rowView;
}
}
Lista metodo di analisi:
private void initListView() {
values = dataSource.getAllValues();
List<String> values = new ArrayList<String>();
List<String> dates = new ArrayList<String>();
for (Value value : values) {
values.add(Double.toString(value.getValue()));
dates.add(secondsToDate(value.getDate()));
}
setListAdapter(new JournalAdapter(context, values, dates));
listView = getListView();
listView.setEmptyView(noItems("NO ITEMS"));
listView.setOnItemClickListener(this);
}
noItems
metodo:
private TextView noItems(String text) {
TextView emptyView = new TextView(context);
emptyView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
emptyView.setText(text);
emptyView.setTextColor(Color.WHITE);
emptyView.setTextSize(20);
emptyView.setVisibility(View.GONE);
emptyView.setGravity(Gravity.CENTER_VERTICAL
| Gravity.CENTER_HORIZONTAL);
return emptyView;
}
C'è qualche ragione per impostare la visibilità di 'TextView' che crei nel metodo' noItems() 'su ** View.GONE **? – Luksprog
Copia questo codice da qui http://stackoverflow.com/questions/4088711/android-listview-default-text-when-no-items. A proposito, ho provato a rimuovere questa riga e anche a VISIBILE, ma sempre la stessa. – burjulius
Puoi provare ad impostare il 'TextView' vuoto una sola volta (ad esempio in' onActivityCreated') nel tuo 'ListFragment' e poi semplicemente aggiornare il suo testo (cerca il' TextView' con 'findViewById()' (ovviamente aggiungendo un id (come 'android.R.id.empty')))? – Luksprog