gpt4 book ai didi

java - Android:如何从另一个 GridView 的 set-on-item-click 监听器函数中通过其位置获取 GridView 项目标签?

转载 作者:行者123 更新时间:2023-12-01 04:56:40 25 4
gpt4 key购买 nike

如何通过其位置获取 grid-view 的项目标签,并且必须从另一个 grid-view 的项目点击监听器函数获取。

gridview2.setOnItemClickListener(new OnItemClickListener() 
{
public void onItemClick(AdapterView<?> parent, View v,
int position, long id)
{
int i=(Integer)gridview1.getChildAt(gridview1s_position).getTag();---> it is returning Null
}
});

我的gridview1.setOnitemClicklistenergridview2.setonitemclicklistener位于同一个文件(MainActivity.java)

但是 gridview1 适配器是一个 ImageAdapter.java(用于设置 gridview1 中的图像),而 gridview2 适配器是 imageadapter2.java(这是为了设置黑色图像,使gridview2看起来像一个有行和列的盒子,否则它会显示为粗线,因为我们没有放置任何东西在 GridView 中)

gridview1.setOnItemClickListener(new OnItemClickListener() 
{
public void onItemClick(AdapterView<?> parent, View v,int position, long id)
{
int tag=(Integer)gridview1.getChildAt(position).getTag();//this returning the tag
}
});

ImageAdapter1.java

 public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub


if(arg1!=null)
{
imv=(ImageView)arg1;
}
else
{
imv=new ImageView(cont);
imv.setLayoutParams(new GridView.LayoutParams(40,40));
imv.setScaleType(ScaleType.CENTER_CROP);
imv.setPadding(0,0,0,0);

}
imv.setImageResource(imageid[arg0]);//imageid aray is having drawable images
imv.setTag(imageid[arg0]);
return imv;

}

GridView 2

gridview2.setOnItemClickListener(new OnItemClickListener() 
{
ImageAdapter ia=new ImageAdapter(getApplicationContext());
public void onItemClick(AdapterView<?> parent, View v,int position, long id)
{
ImageView imv;
if(v!=null)
{
imv=(ImageView)v;
}
else
{
imv=new ImageView(getApplicationContext());
imv.setLayoutParams(new GridView.LayoutParams(40,40));
imv.setScaleType(ScaleType.CENTER_CROP);
imv.setPadding(0,0,0,0);
imv.setBackgroundColor(5555);

}

imv.setImageResource(ia.imageid[tt]);
}
});

最佳答案

使用getChildAt对于这样的事情可能太麻烦了,因为它只适用于引用 View 中的 View 并重新排序其索引以匹配它。我不太了解您的其他 GridView 定位在哪里以进一步追求这一途径。

但无论如何,我做这样的事情的方式是在两个适配器之间创建一个中间集合。就像在一个适配器中保存索引集合中的所有标签一样,然后您可以创建某种 reader get 方法。至少这样我心里就踏实了。

gridview2.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

int i = gridview1.getTagFromPosition(position);

}
});

然后在 gridView1 适配器中,如下所示:

private int[] tagCollection;

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// .....
convertView.setTag(tagCollection[position]);
return convertView;
}

public int getTagFromPosition(int position) {
return tagCollection[position];
}

我至少希望这个想法能够被理解,以便您可以修改它,但是对于您的对象的修改和访问方式来说是实用的。

关于java - Android:如何从另一个 GridView 的 set-on-item-click 监听器函数中通过其位置获取 GridView 项目标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14002964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com