Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 网格视图项';s_Java_Android_Xml - Fatal编程技术网

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