1.适配器没有使用ViewHolder
错误代码:
class ViewHolder {
public TextView tv;
public ShapeableImageView iv;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view == null){
view = LayoutInflater.from(mContext).inflate(R.layout.navigation_item, viewGroup, false);
iv = view.findViewById(R.id.item_iv);
tv = view.findViewById(R.id.item_tv);
}else{
iv = view.findViewById(R.id.item_iv);
tv = view.findViewById(R.id.item_tv);
}
int pos = i + mPageIndex * mGridViewItemCnt;
tv.setText(mNavigationDataList.get(pos).getTitle());
iv.setImageResource(mNavigationDataList.get(pos).getAvatarUri());
return view;
}
这些iv,tv跟返回的view有几把毛关系?
正确代码:
class ViewHolder {
public TextView tv;
public ShapeableImageView iv;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if(view == null){
view = LayoutInflater.from(mContext).inflate(R.layout.navigation_item, viewGroup, false);
holder = new ViewHolder();
holder.iv = view.findViewById(R.id.item_iv);
holder.tv = view.findViewById(R.id.item_tv);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
int pos = i + mPageIndex * mGridViewItemCnt;
holder.tv.setText(mNavigationDataList.get(pos).getTitle());
holder.iv.setImageResource(mNavigationDataList.get(pos).getAvatarUri());
return view;
}
2.item间距过大,同时GridView的numColumns又设置得很大
比如下面的布局,列数是4的时候无法显示,当改成1或者2的时候能显示。
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="4"
android:verticalSpacing="10dp"
>
3. item布局过宽
这是GridView的Item布局
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
android:id="@+id/item_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_marginLeft="10dp"
app:shapeAppearance="@style/circleStyle"
>
android:id="@+id/item_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_below="@id/item_iv"
android:text="跑腿">
叼你公龟的把imageView设成wrap_content是有病是吧?