为动态GirdView/ListView实现OnItemClickListener()

Hen*_*nry 1 android listview gridview onitemclicklistener

GridView适配器ImageView从布局创建.所有图像都是从URLs数据库item IDs中下载的,其中ID来自a 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);
    }

};
Run Code Online (Sandbox Code Playgroud)

van*_*ram 6

第一个选择(好方法)

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

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

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

第二种选择(简单方法)

您可以使用setTag() 随后的onItemClick调用将信息放入gridviewitem的视图中,getTag()并且您拥有唯一的ID