1

该 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);
    }

};
4

2 回答 2

6

第一个选项(好方法)

您保留对适配器的引用(或者通过调用parent.getAdapter()然后转换它来获取它)

在您的适配器中,确保您已覆盖getItem(position)以返回用于填充适配器的对象(可能类似于return arrayList.getItem(position)您使用 BaseAdapter)

在您调用的适配器上getItem(position),这将为您提供完全相同的对象,因此您现在应该拥有所需的所有信息

第二种选择(简单的出路)

您可以在调用时使用setTag() then将信息放入 gridviewitem 的视图中,这样您就有了自己的唯一 IDonItemClickgetTag()

于 2012-06-02T07:46:47.903 回答
1

您可以使用 POJO 类在该类中设置 Image 的 URL 和 ID,并为其创建和 ArrayList 并将其传递给 Adapter 类。通过这样做,您将绑定您的 ImageView 和数据库中的 ImageID。而且,然后在里面onItemClick()你可以简单地使用

 POJO pojo = listview.getAdapter().getitem(position);
 int id = pojo.getId();
于 2012-06-02T08:06:42.963 回答