我的gridview中的第一项未在活动开始时显示。

时间:2016-04-18 03:59:49

标签: android gridview

很抱歉,如果这是一个不合适的问题。我已阅读过许多类似的问题,但没有找到他们的解决方案。在我发布的代码中,我的解决方法显示在我拥有的ImageAdapter类中。

我正在开发一个小应用程序,并且有一个包含GridView的活动。下面是我的ImageAdapter和我所说的活动的Java类:

<GridView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="90dp"
    android:id="@+id/board"
    android:verticalSpacing="0dp"
    android:horizontalSpacing="0dp"
    android:stretchMode="columnWidth"
    android:numColumns="8" />

}

getView中注释掉的几行被我删除,以解决第一个GridView项目在活动首次启动时未显示的问题。在我进行更改之前,适配器中位置0处的项目没有出现,并且没有响应为每个ImageView设置的侦听器。

这是GridView的xml:

$('input').each() 

所以,它似乎现在正在运作。第一项(以及所有其余项目)按其应有的方式显示并作出适当的回应。我在这里询问是否有任何问题可能来自我在getView中所做的事情。我对Android开发完全不熟悉,而且与我见过的所有其他getView示例相比,我所做的对我来说似乎非常讨厌。任何建议/意见(我知道这是不赞成的,抱歉:/)将非常感激。

1 个答案:

答案 0 :(得分:0)

您评论的代码实际上很好,它用于回收视图。

只需从Google文档中查看此示例,它就是您所需要的: GridView adapter

适配器:

public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7
    };
}

调用活动:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            Toast.makeText(HelloGridView.this, "" + position,
                    Toast.LENGTH_SHORT).show();
        }
    });
}