2015-03-02 4 views
0

Я разработка Android проекта, и я пытался скрыть первый элемент в ListView из нескольких способов:Скрыть первый элемент в ListView Android

  1. Если я ставлю следующий код, пространство Безразлично» t исчезает из спискаView.

    convertView.setVisibility (View.GONE);

  2. Если я поместил следующий код, элемент будет скрыт, но следующие элементы появятся в строке 2px height.

    если (условие) {

    convertView.setLayoutParams (новые AbsListView.LayoutParams (-1,1)); convertView.setVisibility (View.GONE);

    } еще {

    , если (convertView.getVisibility() == View.GONE) {
    convertView.setVisibility (View.VISIBLE);
    convertView.setLayoutParams (новый AbsListView.LayoutParams (-1, -2));
    }}

Кто-то может мне помочь?

Заранее спасибо

ответ

0

Взгляните на эту answer

Вместо того чтобы устанавливать видимость на GONE набор к нему пустой макет

+0

Да, да! Он отлично работает! Спасибо Kony2013 ;-) –

0

Есть три способа сделать это; 1 используйте headview списка и контролируйте его;

2 добавьте itemlayout в группу viewGroup, возьмите эту группу представлений как convertView и управляйте элементом itemLayout видимым или нет положением;

3 Использование viewType адаптера на другой макет элемента

только идеи ..

0

Я думаю, что лучший вариант, чтобы скрыть первый элемент в адаптере:

public class HideFirstItemListAdapter extends BaseAdapter { 

    private List items; 

    public RssListAdapter(Context context, List<RssEntry> items) { 
     this.context = context; 
     this.items = items; 
    } 

    @Override 
    public int getCount() { 
     return items.size() - 1; 
    } 

    @Override 
    public RssEntry getItem(int position) { 
     return items.get(position + 1); 
    } 

    @Override 
    public long getItemId(int id) { 
     return id; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // ... 
    } 
} 

Или даже хранить только подписок в конструкторе:

public RssListAdapter(Context context, List<RssEntry> items) { 
    this.context = context; 
    this.items = items.subList(1, items.size()); 
} 

И храните адаптер как a normal one: ... @Override public int getCount() { return items.size(); }

@Override 
public RssEntry getItem(int position) { 
    return items.get(position); 
} 
... 
Смежные вопросы