我在我的应用程序中使用GridView
,我将列数设置为2它正常工作但如果网格中的项目数大于8项,则开始重复第一项。< / p>
我希望在不重复任何项目的情况下达到14项。谢谢!
这是我的gridview xml
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="160dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:paddingTop="10dp"
android:layout_below="@id/View1"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" />
![这是屏幕截图,在它到达(cotact 8)后重复(cotact 1),(cotact 2)......等] [1] 这是我的适配器
public View getView(int position, View convertView, ViewGroup parent)
{
View v;
if (convertView == null) { // if it's not recycled, initialize some attributes
LayoutInflater li = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
v = li.inflate(R.layout.icon_launcher, null);
TextView tv = (TextView)v.findViewById(R.id.icon_text);
ImageButton ib = (ImageButton)v.findViewById(R.id.icon_image);
LinearLayout icon = (LinearLayout)v.findViewById(R.id.icon_launcher);
//icon.setLayoutParams(new GridView.LayoutParams(203,200));
ib.setScaleType(ib.getScaleType().FIT_XY);
ib.setPadding(1,1,1,1);
ib.setFocusable(false);
ib.setClickable(false);
ib.setImageBitmap(BitmapFactory.decodeFile(mThumbIds.get(position)));
tv.setText(mTextsIds.get(position));
} else
{
v = (View) convertView;
}
return v;
}
答案 0 :(得分:1)
尝试此修复程序。
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) { // if it's not recycled, initialize some
// attributes
LayoutInflater li = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(R.layout.icon_launcher, null);
}
TextView tv = (TextView) convertView.findViewById(R.id.icon_text);
ImageButton ib = (ImageButton) convertView.findViewById(R.id.icon_image);
LinearLayout icon = (LinearLayout) convertView
.findViewById(R.id.icon_launcher);
// icon.setLayoutParams(new GridView.LayoutParams(203,200));
ib.setScaleType(ib.getScaleType().FIT_XY);
ib.setPadding(1, 1, 1, 1);
ib.setFocusable(false);
ib.setClickable(false);
ib.setImageBitmap(BitmapFactory.decodeFile(mThumbIds.get(position)));
tv.setText(mTextsIds.get(position));
return convertView;
}
答案 1 :(得分:0)
这是因为您的适配器正在重复使用这些视图。并且在您的代码中,只有当 convertView 为null(已创建)时才会获得控件。
在某些项目之后,android开始重用视图(convertView不再为null),而 getView 方法不会设置textview等。
您应该在&#34; if(convertView == null)&#34;之外设置内容(textview等)。像@Glenn建议的方法。