GridView适配器从布局创建ImageView
。
所有图像都从URLs
方面下载到数据库item IDs
,其中ID来自JSONArray
。
让我们说,视图现在显示的项目
ID: 1,3,4,7
。
由于GridView项是动态的,因此位置(从0开始)无法在GridView上真正识别我的项目。
有没有其他方法可以从数据库项ID中识别该图像?
public OnItemClickListener ClickListner = new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Toast.makeText(getApplicationContext(),
// ""+position, Toast.LENGTH_SHORT).show();
//Identification code for the item to be added here
Intent view =
new Intent(main.this, View.class);
view.putExtra("ID", id);
//expected to have an ID equal to database item ID
startActivity(view);
}
};
答案 0 :(得分:6)
第一个选项(好方法)
您保留对适配器的引用(或者通过调用parent.getAdapter()
获取它然后投射它)
在您的适配器中,请确保您已覆盖getItem(position)
以返回用于填充适配器的对象(如果您使用BaseAdapter,则可能类似于return arrayList.getItem(position)
)
在您调用getItem(position)
的适配器上,这将为您提供完全相同的对象,因此您应该拥有现在需要的所有信息
第二个选项(简单易用)
您可以使用setTag()
将信息放入gridviewitem的视图中
然后在onItemClick
中,您拨打getTag()
并在那里拥有您唯一的ID
答案 1 :(得分:1)
您可以使用POJO类在该类中设置Image的URL和ID,并为其创建和ArrayList并将其传递给Adapter类。通过这样做,您将绑定ImageView和数据库中的ImageID。然后,在onItemClick()
内,你可以简单地使用
POJO pojo = listview.getAdapter().getitem(position);
int id = pojo.getId();