Java 网格视图项';s
在我的应用程序中使用Java 网格视图项';s,java,android,xml,Java,Android,Xml,在我的应用程序中使用GridView时,我将列数设置为2,这样可以正常工作,但如果网格中的项数大于8项,它将开始重复第一项 我想达到14个项目,不重复任何项目。谢谢 这是我的gridview xml <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent"
GridView
时,我将列数设置为2,这样可以正常工作,但如果网格中的项数大于8项,它将开始重复第一项
我想达到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" />
试试这个办法
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;
}
这是因为适配器正在重用视图。在您的代码中,只有当convertView为null(创建)时,才能获得控件
在一些项目之后,android开始重用视图(convertView不再为null),并且您的getView方法没有设置textview等
您应该在“if(convertView==null)”方法之外设置内容(textview等),如@Glenn建议的那样。粘贴适配器代码。它必须与gridview适配器代码相关。可能正在考虑重用。好的,我将我的适配器粘贴到@MichałZ@Yvan RAJAONARIVONYMark,如果它解决了您的问题,请给出答案
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;
}