2015-02-11 3 views
0

У меня есть множество решений по этому вопросу, но ни одна из них не решила мою проблему. Что я хочу сделать, когда мой список списка пуст, его нормально, если появляется пустое текстовое представление по умолчанию (которое объявлено в xml), но что, если я хочу изменить его текст в какой-то момент в действии, которое расширяет listfragment согласно к моей потребности и сделать его видимым .... Недавно я попытался это:Как динамически изменять текст пустого представления в спискеfragment

public void setEmptyText(CharSequence emptyText) { 
    ListView mListView = (ListView) NotificationsView.findViewById(android.R.id.list); 
    View emptyView = mListView.getEmptyView(); 
     ((TextView) emptyView).setText(emptyText); 
} 

это не дает какой-либо ошибки, но это не решает проблему слишком. Любая помощь будет оценена благодаря

EDIT: вот мой макет listfragment

 <?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:ignore="MergeRootFrame" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center_vertical|center_horizontal" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@id/android:list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@color/fragment_bg" 
      android:divider="@null" 
      android:dividerHeight="1dp" 
      android:listSelector="@drawable/list_style" > 
     </ListView> 

     <TextView 
      android:id="@id/android:empty" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@color/fragment_bg" 
      android:text="No data" /> 
    </LinearLayout> 

</android.support.v4.widget.SwipeRefreshLayout> 
+0

Можете ли вы поделиться своим макетом, где вы объявляете свое текстовое представление и просмотр списка. Не имеет смысла бросать представление в текстовое представление а затем назначить ему текст .. Проблема в руке не очень ясна .. Пожалуйста, уточните .. –

+0

Я отредактировал свой ответ –

+0

Вам не нужно видеть мой предыдущий код, так как я знал, что что-то не так с ним, поэтому не работает. Мне просто нужно каким-то образом изменить текст. –

ответ

1

Если вы используете ListFragment все, что вам нужно сделать, это вызвать метод

setEmptyText("Your empty text"): 

Система распознает вид метку с идентификатором android:id="@id/android:empty" и изменит текст для вас. Нет необходимости ссылаться на него или делать какие-либо броски, все это встроено в ListFragment

+0

, да это тоже правильно. все, что я делал неправильно, было то, что я вызывал его в неправильном месте ..... Я должен был называть его, когда активность создается в listfragment. –

0

По умолчанию ListView или адаптер (не помню какой) делает его невидимым. Позвоните emptyView.setVisibility(View.VISIBLE);, чтобы сделать его видимым.

+0

Он спрашивает об изменении значения текстового вида, не делая список видимым или невидимым. –

+0

Могу ли я изменить текст пустого экрана с помощью setEmptytext()? если да, то как? –

0

Это как изменить значение зрения текста:

TextView tv = (TextView) findViewById(R.id.empty); 
tv.setText('yourText'); 
+0

Вы не можете отказаться от пустого представления, как вы отказываетесь от любого другого textView .... Я пробовал его –

+0

Оказывается, я делал это прямо перед тем, как .... Я просто делал глупую ошибку ..... textView и listView были в SwipeRefreshLayout, и он отображал только listview, а не textView. когда я включаю listview и textview в linearlayout.теперь, если список пуст, появляется пустое окно, и если в списке есть некоторые элементы, пустое окно скрывается (это поведение по умолчанию для Android) .... и я могу изменить текст пустого окна в любое время одним и тем же методом в моем вопросе .. Btw thanx За вашу помощь приятель :) ... Я благодарен вам –

+0

Я думаю, что очевидно, что OP знает, как установить текст в «TextView», вы можете увидеть его в своем коде –

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