How to ignore the first item in array adapter

大城市里の小女人 提交于 2019-12-02 17:59:42

问题


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().get(position);

I have a isssueShowingList that is a ArrayList , the problem is how can I ignore the first element in this list in the adapter? I tried return null but it has some error so are there any better way? Thanks


回答1:


Return first element as usual but also set visibility to GONE or set Height to 0 in LayoutParams.

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

or

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

convertView.setLayoutParams(lp);



回答2:


I think there is a better option ...

Add a field

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

Then, in your constructor

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



回答3:


The simplest solution, and far the most proper one, is not to break adapter's logic. It's much better to control data that you pass to the adapter.

So in the code line where you pass data to your adapter, simple remove all rows that the adapter will not need.

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


来源:https://stackoverflow.com/questions/20612556/how-to-ignore-the-first-item-in-array-adapter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!