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
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);
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);
}
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