При использовании ListActivity можно ли программно устанавливать TextView «android: empty» в TextText ()? - PullRequest
0 голосов
/ 16 апреля 2011

Я заполняю ListView ListView, используя ArrayAdapter, расширенный для применения некоторых условий к данным, которые он возвращает.Адаптер может вернуть пустой набор по нескольким возможным причинам, и, поскольку эти условия устанавливаются пользователем, я хотел бы передать информацию с помощью setText () в представлении android: empty.В ListActivity (как до, так и после setListAdapter) я пробовал

        TextView t = new TextView(this);
        t.setText("HEY!");
        getListView().setEmptyView(t);

, а также

        getListView().getEmptyView().setVisibility(View.GONE);
        TextView t = new TextView(this);
        t.setText("HEY!");
        ((ViewGroup)getListView().getParent()).addView(t);
        getListView().setEmptyView(t);

, но я получаю только сообщение, установленное в макете android: empty.

Спасибо!

Ответы [ 3 ]

8 голосов
/ 18 апреля 2011

Я удивлен, что это еще не пришло и на него уже ответили ... Я думаю, что это весьма полезно. Не нужно много копаться, чтобы найти ответ:

    MyAdapter mAdapter = new MyAdapter(this, R.layout.file_row, data);      
    setListAdapter(mAdapter);
    ListView listView = (ListView)findViewById(android.R.id.list);
    if (mShowOnlySomeSubset) {
        listView.setEmptyView(findViewById(R.id.emptySubset));
    } else if (mShowOnlySomeOtherSubset) {
        listView.setEmptyView(findViewById(R.id.emptyOtherSubset));
    } else {
        listView.setEmptyView(findViewById(android.R.id.empty));            
    }

R.id.emptySubset и R.id.emptyOtherSubset - это идентификаторы TextView, определенные в том же XML-файле макета, что и элементы android: list и android: empty.

Легко, peasy:)

3 голосов
/ 16 апреля 2011

Вы можете попробовать это:

http://www.littlefluffytoys.com/?p=74

По сути, они говорят, что вы должны обязательно добавить emptyView в иерархию представлений, прежде чем использовать его.

TextView emptyView = new TextView(context);
emptyView.setLayoutParams(
  new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
emptyView.setText(“This appears when the list is empty”);
emptyView.setVisibility(View.GONE);
((ViewGroup)list.getParent()).addView(emptyView);
list.setEmptyView(emptyView);
2 голосов
/ 16 апреля 2011

Вы можете использовать этот немного другой подход: http://wiresareobsolete.com/wordpress/2010/08/adapting-to-empty-views/

...