很抱歉,如果这是一个不合适的问题。我已阅读过许多类似的问题,但没有找到他们的解决方案。在我发布的代码中,我的解决方法显示在我拥有的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示例相比,我所做的对我来说似乎非常讨厌。任何建议/意见(我知道这是不赞成的,抱歉:/)将非常感激。
答案 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();
}
});
}