更改图库中的图像

时间:2014-01-20 19:35:58

标签: android

我有一个画廊,我正在显示一些身份证作为图像。 当用户点击图片时,我想将图片更改为另一张图片,显示卡片的“背面”。

我将一个对象的arraylist绑定到图库,每个对象包含前后图像。

我有两个图像视图,一个用于前视图,一个用于后视图。图库将首先显示所有正面图像(“背面”图像视图可见性设置为GONE)。我的想法是在用户点击时更改相关图片视图的可见性。

这就是我所拥有的,购买我不知道如何实现点击功能来更改视图。

非常感谢任何协助。

1 个答案:

答案 0 :(得分:0)

GalleryAdapterView的特化,其中还包含ListViewSpinnerGridView ...所有这些都有共同的显示n次与不同数据相同的'种类'。

这些特定视图使用Adapter来处理视图创建和填充过程。在适配器上调用getView方法,为此类提供用于为特定行(单元格,库项目...)创建视图的数据。

getView认为必要时调用AdapterView方法,开发人员无法控制创建视图或何时创建视图。

因此,实际上不可能直接修改AdapterView的孩子。这将导致修改被任意覆盖,甚至转移到视图的另一行。

相反,要对子视图执行操作,必须对用于填充视图的数据执行操作。 (请注意,这会强制执行MVC模型,因为视图仍然是模型的反映,而不是由控制器操纵。)

在此特定示例中,视图将根据数据的checked状态显示不同的图像。为此,请向模型添加checked成员:

public class MyModel {
    // ... Other members
    public boolean checked = false;
}

在getView中使用该值:

@Override
public View getView(int position, View convertView, View parent) {
    MyModel current = getItem(position);
    // ... Inflate and populate
    if (current.checked) {
        // Specific checked behavior
    } else {
        // Not checked behavior
    }
}

要在控制器中修改checked值,可能是OnItemClickListener

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    // Here, there can be several ways to access the clicked item.
    // I assume myAdapter is the adapter used for the gallery
    MyModel current = myAdapter.get(position);
    current.checked = !current.checked;
    myAdapter.notifyDataSetChanged();
}