2013-12-16 62 views
0
public class ListViewImgAdapter extends BaseAdapter {       

    public static final String TAG = "ListViewImgAdapter";      
    private final int plastic_randomNum = 218947932;       
    private final int plastic_iconNum = 98367590;        

    int mGalleryItemBackground;             
    private Context mContext;             
    public int pageCount = Broker.model.issueFilter.issueShowingList().size(); 
    public String[] mImageIds;             

    public ListViewImgAdapter(Context c) {          
     mContext = c;               
    }                   

    public void updateListSize() {            
     pageCount = Broker.model.issueFilter.issueShowingList().size();   
     Log.d(TAG, "RefreshAll, have cells: " + pageCount);      
    }                   

    public int getCount() {              
     return Broker.model.issueFilter.issueShowingList().size();    
    }                   

    public Object getItem(int position) {          
     return position;              
    }                   

    public long getItemId(int position) {          
     return position;              
    }                   

    public View getView(int position, View convertView, ViewGroup parent) { 
     RelativeLayout container ; 
//  Log.d(TAG,"GetView. ConvertView "+position+" of "+ Broker.model.issueFilter.issueShowingList().size()); 
     if (Broker.model.issueFilter.issueShowingList().size()<= position ) return null; 
     if (convertView == null) { 
//   Log.d(TAG,"GetView. ConvertView is null"); 
      container = new RelativeLayout(mContext); 
      IRIssue theIssue = Broker.model.issueFilter.issueShowingList().get(position); 
      final int clickedPosition = position; 

的第一項.............如何忽略陣列適配器

Broker.model.issueFilter.issueShowingList()得到(位置)。

我有一個isssueShowingList是一個ArrayList,問題是我該如何忽略適配器中此列表中的第一個元素?我試過返回null,但它有一些錯誤,所以有沒有更好的方法?謝謝

+3

請格式化代碼。 –

回答

4

像往常一樣返回第一個元素,但也設置可見性GONE或在LayoutParams中將高度設置爲0。

if(position==0) 
convertView.setVisibility(View.GONE); 
else 
convertView.setVisibility(View.VISIBLE); 

RelativeLayout.LayoutParams lp=null; 
if(position==0) 
lp=new RelativeLayout.LayoutParams(-1,0); 
else 
lp=new RelativeLayout.LayoutParams(-1,-1); 

convertView.setLayoutParams(lp); 
+0

謝謝,我試過這個,雖然我設置了它仍然使用塊,這意味着,第一個元素不可見,但在那個地方有一個「白色空間」 – user782104

+0

因此,嘗試第二個解決方案並將佈局高度設置爲0。如果沒有幫助,我看不到任何其他方式從適配器中刪除第一個元素 – Gooziec

1

我認爲這是一個更好的選擇......

添加一個字段

private List<YOUR_TYPE> mDatas; 
// OR 
private ArrayList<YOUR_TYPE> mDatas; 

然後,在你的構造

public ListViewImgAdapter(Context c) {          
     mContext = c;     
     mDatas = Broker.model.issueFilter.issueShowingList(); 
     if (mDatas > 0) 
      mDatas.remove(0); 
    }  
+0

這是我會這樣做的方式,那麼你不必編碼假裝元素0不存在。我認爲它會使代碼更清晰 – Taegost

0

最簡單的解決方案,也是最正確的解決方案不是破壞適配器的邏輯。控制傳遞給適配器的數據會更好。

因此,在將數據傳遞到適配器的代碼行中,可以簡單地刪除適配器不需要的所有行。

List<T> myList = fetchMyList(); 
myList.remove(0); 
myList.remove(11); 
myList.remove(N); 
MyAdapter myAdapter = new MyAdapter(this, R.layout.myLayout, myList);