Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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
Android 如何访问GridView的所有子元素?_Android_Gridview - Fatal编程技术网

Android 如何访问GridView的所有子元素?

Android 如何访问GridView的所有子元素?,android,gridview,Android,Gridview,我有一个GridView显示“带文本覆盖的图标”项目。 在一个特定的事件中,我想迭代所有这些项目并更改文本。但是如何获得对侦听器之外的那些项目的引用呢 我是否可以执行以下操作: view.findAllViewById(R.id.itemtext)?我知道findAll()不存在 item_view.xml: <RelativeLayout> <ImageView /> <TextView android:id="@+id/itemtext" /&g

我有一个
GridView
显示“带文本覆盖的图标”项目。 在一个特定的事件中,我想迭代所有这些项目并更改文本。但是如何获得对
侦听器之外的那些项目的引用呢

我是否可以执行以下操作:
view.findAllViewById(R.id.itemtext)?我知道findAll()不存在

item_view.xml:

<RelativeLayout>
    <ImageView />
    <TextView android:id="@+id/itemtext" />
</RelativeLayout>

main.xml:

<LinearLayout>
    <GridView android:id="@+id/simpleGridView" />
</LinearLayout>

代码

GridView grid=(GridView)findViewById(R.id.simpleGridView);
grid.setAdapter(…)//内部适配器:通过R.layout.item_视图为项目充气
grid.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView项=((TextView)view.findViewById(R.id.itemtext));
item.setText(“某些单击文本”);
}
});

问题:如何访问所有可用的
R.id.itemtext
元素并遍历它们?因为我没有提到它们。

1。子视图

如果您真的想访问
R.id.itemtext
视图,您可能可以将
GridView
用作
视图组(它扩展了它),对其子项进行迭代,并为每个子项找到
findViewById(R.id.itemtext)

for (int i = 0; i < grid.getChildCount(); i++) {
    View child = getChildAt(i);
    View itemText = child.findViewById(R.id.itemtext);
    ...
}

如果要获取所有textview ref,您想做什么?通知您的适配器这样做
for (int i = 0; i < grid.getChildCount(); i++) {
    View child = getChildAt(i);
    View itemText = child.findViewById(R.id.itemtext);
    ...
}
int first = grid.getFirstVisiblePosition();
int last = grid.getLastVisiblePosition();
for(int i=first; i<=last; ++i){
    Object item = grid.getItemAtPosition(); // You should probably cast to your adapter's item type
}