2013-03-10 2 views
1

Как следует из названия, я хочу установить представление по умолчанию для активности списка. Я пытался это сделать:Хотите, чтобы setEmptyView() ListActivity

TextView emptyView = new TextView(this); 
emptyView.setText("No lists available"); 
this.getListView().setEmptyView(emptyView); 

Но это не помогло.

+0

вы можете опубликовать свой макет? – fedepaol

+0

Это просто ListActivity без xml. – NightStrider

+0

«но это не сработало». смысл .... Вы получаете какую-либо ошибку, «TextView» без текста, ничего. Ваша 'деятельность'' расширяет ListActivity', правильно? – codeMagic

ответ

3

Проблема заключается в том, что emptyView никогда не привязывается ни к чему, если вы используете addView():

TextView emptyView = new TextView(this); 
((ViewGroup) getListView().getParent()).addView(emptyView); 
emptyView.setText("It's empty!"); 
getListView().setEmptyView(emptyView); 

Теперь вы будете видеть это!


Я написал быстрый Runnable чередовать между пустой/"полный" ...

public class Example extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TextView emptyView = new TextView(this); 
     ((ViewGroup) getListView().getParent()).addView(emptyView); 
     emptyView.setText("It's empty!"); 
     getListView().setEmptyView(emptyView); 

     getListView().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       if(getListAdapter() == null) 
        setListAdapter(new ArrayAdapter<String>(Example.this, android.R.layout.simple_list_item_1, new String[] {"It", "Has", "Content"})); 
       else 
        setListAdapter(null); 
       getListView().postDelayed(this, 2000); 
      } 
     }, 2000); 
    } 
} 
+0

Почему вы используете '((ViewGroup) getListView(). GetParent()). AddView (emptyView)' вместо просто 'addView (emptyView)'? Разве не является родителем 'ListView' только« ListActivity », который содержит этот код? – Maxpm

+0

«Разве не является родителем' ListView' только «ListActivity», который содержит этот код? » Действия не являются представлениями, родительский объект ListView не может быть Activity. Поэтому 'addView()' не является методом в ListActivity, это ошибка времени компиляции ... вы могли бы ответить на эти вопросы сами, если бы попробовали свое предложение. ;) В любом случае существует множество способов прикрепления 'emptyView' к макету. Это только тот, который вводит наименее новые концепции. – Sam

+0

Извините за глупый вопрос. Я все еще изучаю разработку Android. Я попробовал и получил ошибку компиляции, но я не понимал, почему. – Maxpm

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