如何唯一标识视图

时间:2013-11-29 09:37:23

标签: android android-listview drag-and-drop android-linearlayout android-imageview

我是Java和Android编程的新手,如果我的英语不好,我很抱歉:D

我正在使用拖放功能制作应用。我正在使用RelativeLayout作为放置区域,并将生成的ImageView用作项目。

数据来自ListView。当我拖动ListView项并将其放在relativeLayout上时,它将创建一个ImageView。但是如何将ListView项中的值“插入”到ImageView中,这样我就可以在布局上删除新项目时检查现有数据,这样就无法删除listview中的相同数据。

这是我在ACTION_DROP上的代码

ClipData.Item item = event.getClipData().getItemAt(0);// I can get the dropped Item data from this
int x_cord = (int) event.getX();
int y_cord = (int) event.getY();
final RelativeLayout root = (RelativeLayout)findViewById(R.id.relLay);
final ImageView img = new ImageView(getApplicationContext());
img.setMinimumWidth(32);
img.setMaxWidth(32);
img.setMinimumHeight(32);
img.setMaxHeight(32);
img.setBackgroundResource(R.drawable.marker2);
img.setX(x_cord);
img.setY(y_cord);
root.addView(img);

1 个答案:

答案 0 :(得分:1)

为您创建的每个视图创建一个唯一ID,以便区分。

Object tag = ... // Create a unique `tag` object depending on the data that comes from `ListView`

ImageView existingView = root.findViewWithTag(tag);
if (existingView == null) { // Didn't exist
    ImageView newView = new ImageView(getApplicationContext());
    newView.setTag(ID);
    root.addView(newView);
}