2015-06-08 3 views
2

Я имею проблему установить сообщение «Нет результатов», когда GetCount() возвращает 0.Получить «Нет результатов» Сообщение пользовательского адаптера ListView Android

У меня есть пользовательский макет для ListView, и я просто хочу чтобы получить текстовое представление «Нет результатов», когда в списке нет данных.

Любая идея, как достичь этого?

Я увидел что-то с пустым идентификатором, но это должно быть в списке, так как это настраиваемый макет, у него нет этого «тега».

Пользовательский адаптер Код:

public class ListScheduleAdapter extends BaseAdapter { 

     Context context; 

     protected List<Schedule> listSchedules; 
     LayoutInflater inflater; 

     public ListScheduleAdapter(Context context, List<Schedule> listSchedules) { 
      this.listSchedules = listSchedules; 
      this.inflater = LayoutInflater.from(context); 
      this.context = context; 
     } 

     public int getCount() { 
      return listSchedules.size(); 
     } 

     public Schedule getItem(int position) { 
      return listSchedules.get(position); 
     } 

     public long getItemId(int position) { 
      return listSchedules.get(position).getCod_Horario(); 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ViewHolder holder; 
      if (convertView == null) { 

       holder = new ViewHolder(); 
       convertView = this.inflater.inflate(R.layout.layout_list_item, 
         parent, false); 

       holder.txtTeacher = (TextView) convertView 
         .findViewById(R.id.txt_teacher); 
       holder.txtDayofWeek = (TextView) convertView 
         .findViewById(R.id.txt_dayofweek); 
       holder.txtSubject = (TextView) convertView 
         .findViewById(R.id.txt_subject); 
       holder.txtTime = (TextView) convertView 
         .findViewById(R.id.txt_time); 
       holder.txtRoom = (TextView) convertView 
         .findViewById(R.id.txt_room); 
       holder.txtClass = (TextView) convertView 
         .findViewById(R.id.txt_class); 

       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 

      Schedule sche = listSchedules.get(position); 
      String fullTeacher = sche.getProfessor(); 
      String[] names = fullTeacher.split(" "); 

      holder.txtTeacher.setText(names[0] + " " + names[names.length-1]); 
      holder.txtDayofWeek.setText(sche.getDia_Semana()); 
      holder.txtSubject.setText(sche.getDisciplina()); 
      holder.txtTime.setText(sche.getT_Entrada() + "h-" + sche.getT_Saida()+"h"); 
      holder.txtRoom.setText(sche.getSala()); 
      holder.txtClass.setText(sche.getTurma()); 


      return convertView; 
     } 

     private class ViewHolder { 
      TextView txtTeacher; 
      TextView txtDayofWeek; 
      TextView txtSubject; 
      TextView txtTime; 
      TextView txtRoom; 
      TextView txtClass; 
     } 

    } 

Фрагмент кода (метод, названный по методу асинхронной OnPostExecute):

private void populateListView() { 

    ListScheduleAdapter adapter = new ListScheduleAdapter(getActivity(), ScheduleList); 
    listviewHorarios.setAdapter(adapter); 

} 

Компоновка Код:

<?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:orientation="horizontal" 
    android:padding="8dp" > 

     <LinearLayout 
      android:id="@+id/layout_row1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/txt_teacher" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="normal" /> 

      <TextView 
       android:id="@+id/txt_dayofweek" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="normal" /> 

     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/layout_row2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/layout_row1" 
      android:orientation="horizontal" > 


      <TextView 
       android:id="@+id/txt_subject" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="normal" /> 

      <TextView 
       android:id="@+id/txt_time" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="normal" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/layout_row3" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/layout_row2" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/txt_room" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="normal" /> 

      <TextView 
       android:id="@+id/txt_class" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="2" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="normal" /> 

     </LinearLayout> 

<TextView 
     android:id="@+id/empty" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:drawablePadding="5dp" 
     android:gravity="center" 
     android:text="@string/no_data_available" 
     android:textColor="@android:color/black" 
     android:visibility="gone" /> 

</RelativeLayout> 
+0

Показать, где вы инициализируете 'Адаптер'? – hrskrs

ответ

2

добавить

<TextView 
     android:id="@+id/empty" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:drawablePadding="5dp" 
     android:gravity="center" 
     android:text="@string/no_data_available" 
     android:textColor="@android:color/black" 
     android:visibility="gone" /> 

к тому же макет, где вы объявили о своей ListView (завернуть как в FrameLayout)

на экземпляр зову ListView в

listView.setEmptyView(findViewById(R.id.empty)); 

когда адаптер пуст, вы увидите TextView apper

+0

Привет, так как я получил пользовательский класс адаптеров, как я могу это сделать? Я не могу просто разместить «listView.setEmptyView (findViewById (R.id.empty)); по методу populateListView(). – Exprove

+0

ничего не связано с адаптером. Добавьте эту строку в свою активность/фрагмент. ListView заботится об изменении видимости пустого представления – Blackbelt

+0

Да, я понял, что это не связано с адаптером. Спасибо, что он работает сейчас, у меня на макете адаптера, на макете фрагмента я должен положить пустое поле. – Exprove

1

добавьте TextView на ваш listview макет и setVisibility его на номер GONE и проверьте адаптер:

if(adapter==null){ 
listView.setVisiblity(View.GONE); 
tvEmpty.setVisiblity(View.VISIBLE); 
} 

надеюсь, что это поможет.

Смежные вопросы