2015-03-02 88 views
0

我開發一個Android項目,我試圖隱藏的第一個項目中的幾種方法一個ListView:隱藏第一項ListView中的Android

  1. 如果我把下一個代碼,空間沒有按」從listView消失。

    convertView.setVisibility(View.GONE);

  2. 如果我把下一個代碼隱藏,但下一個項目出現在2px高度的行中。

    如果(條件){

    convertView.setLayoutParams(新AbsListView.LayoutParams(-1,1)); convertView.setVisibility(View.GONE);

    }否則{

    如果(convertView.getVisibility()== View.GONE){
    convertView.setVisibility(View.VISIBLE);
    convertView.setLayoutParams(new AbsListView.LayoutParams(-1,-2));
    }}

有人能幫助我嗎?

在此先感謝

回答

0

看看這個answer

相反能見度GONE組設置爲一個空的佈局

+0

呀!它完美的作品!謝謝Kony2013 ;-) – 2015-03-02 17:13:16

0

有三種方式來做到這一點; 1使用listview的headview並控制它;

2將itemlayout添加到viewGroup中,將此viewGroup作爲convertView,並通過position控制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()); 
} 

並保持適配器爲一個正常的: ... @Override public int getCount(){ return items.size(); }

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