Android 如何在GridView(onCreateView)中按位置获取项目视图?
我想在GridView中按位置获取项目视图,但我不知道如何操作 我试图迭代gridView.getChildCount(),但它返回0() 当我调用gridView.getCount()时,它返回25(我的gridView的确切项数) 当我尝试调用getCount循环中的getChildAt(position)时,我得到一个NPE 我要做的就是让item视图在item视图中获得2个ImageView,并在每个视图上设置一个setOnClickListener() 目前,我在gridView的setOnItemClickListener()中设置了这些侦听器 但是,当我第一次单击ImageView时,侦听器没有设置,然后就可以了(因为一旦单击单元格,它就会初始化)Android 如何在GridView(onCreateView)中按位置获取项目视图?,android,android-gridview,Android,Android Gridview,我想在GridView中按位置获取项目视图,但我不知道如何操作 我试图迭代gridView.getChildCount(),但它返回0() 当我调用gridView.getCount()时,它返回25(我的gridView的确切项数) 当我尝试调用getCount循环中的getChildAt(position)时,我得到一个NPE 我要做的就是让item视图在item视图中获得2个ImageView,并在每个视图上设置一个setOnClickListener() 目前,我在gridView的se
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
[... ... ...]
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
ImageView shutdown=(ImageView)v.findViewById(R.id.grid\u item\u shutdown);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(getActivity(),“Down”,Toast.LENGTH_SHORT.show();
}
});
ImageView shutterUp=(ImageView)v.findViewById(R.id.grid\u item\u shutterUp);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(getActivity(),“Up”,Toast.LENGTH_SHORT).show();
}
});
//侦听器的其余部分(正常行为)。
}
});
返回rootView;
}
以下是我的网格单元的屏幕截图:
gridView.getCount()是适配器的大小,因此适配器中有25项
getChildCount()是网格子级的大小,因此当您调用它时,网格没有子级,所以在这段时间内,您可能还没有在屏幕上绘制
这就是为什么要获得NPE,因为您没有子视图。我通常在自定义适配器中执行此类操作。只需扩展BaseAdapter
getView()
并将您的onClicks()
放入其中我有自己的适配器。。。我很愚蠢。我以前不想使用它,因为我必须在onclick中创建一个线程(内部套接字),但是使用AsyncTask应该可以。谢谢
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
[... ... ...]
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ImageView shutterDown = (ImageView) v.findViewById(R.id.grid_item_shutter_down);
shutterDown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Down", Toast.LENGTH_SHORT).show();
}
});
ImageView shutterUp = (ImageView) v.findViewById(R.id.grid_item_shutter_up);
shutterUp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Up", Toast.LENGTH_SHORT).show();
}
});
// The rest of the onItemClickListener (normal behavior).
}
});
return rootView;
}