0

我有以下问题。

我有两个片段,每个片段都有一个带适配器的 ListView。通过从第一个列表中选择元素,我将包含第一个列表的片段替换为包含第二个列表的片段。我想让每一行背景只在第二个 Fragment 中透明,但是在第二个适配器的 getView 中使用的以下代码,它看起来像更新资源?谁能解释为什么?

代码:

第一个片段:

public View getView(int position, View convertView, ViewGroup parent) {
(...)
    v.setBackgroundResource(R.drawable.abstract_gray);
(...)
}

第二个片段:

public View getView(int position, View convertView, ViewGroup parent) {
(...)
    Drawable backgroundDrawable = context.getResources().getDrawable(R.drawable.abstract_gray);
    backgroundDrawable.setAlpha(ToolsAndConstants.BACKGROUND_TRANSPARENCY);
    v.setBackgroundDrawable(backgroundDrawable);
    // I call this to check if when I call the drawable from resurce it will not be transparent
    v.setBackgroundResource(R.drawable.abstract_gray);
    // But it is...So previous fragment background, when I go back with back Button
(...)
}

也许这个问题真的很基础,但是当我从资源创建新对象时,我实际上是在使用资源本身,对新对象所做的所有更改都会影响整个应用程序,即使其他类无法访问该对象?

编辑:

抱歉,我刚刚意识到我没有创建新的 Drawable,我只是做一个参考。那我怎样才能创建一个新的呢?如果我不能,我怎样才能改变只有第二个列表的背景?

4

1 回答 1

1

Marek 阅读了这篇文章,它解释了你的疑惑http://android-developers.blogspot.com/2009/05/drawable-mutations.html

于 2013-06-06T06:45:48.320 回答