<android>“onListItemClick(...)”便捷方法</android>的奇怪行为

时间:2015-02-27 03:05:00

标签: java android listview android-listfragment

我正在我的程序中实现一个继承自“ListFragment”的片段。这是因为我打算显示一个项目列表。

我创建了一个适配器并调用了方法“setListAdapter(ListAdapter)”来设置适配器:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    (...)

    ArrayAdapter<MyClass> adapter =
            new ArrayAdapter<MyClass>(getActivity(),
                                    android.R.layout.simple_list_item_1,
                                    mMyClass);
    setListAdapter(adapter);
}

现在我决定回复用户触摸任何视图。我通过重写ListFragment的便捷方法 onListItemClick(...)实现了这一点:

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    v.setBackgroundColor(Color.GREEN);
}

请注意此代码的简单性:我只是将该视图的背景颜色更改为绿色。我决定在Android 4.4.2手机上运行代码并发现一个非常奇怪的行为:

视图的背景颜色DO变为绿色。但是......不仅视图的背景颜色,而且列表中的其他(随机选择的?)视图也是如此。

假设我的ListView中有100个视图(从0到99)。如果我点击视图#0,不仅视图的背景颜色会改变,而且视图#13,视图#26,视图#39,...视图#91的背景颜色也会改变,它们是均匀分布的。但为什么呢?

如果我要高速向下滚动列表(快速移动我的手指,通过非常快速的视图),那么我之前提到的视图将再次变为白色,而其他视图将变为绿色。

你可以在家里试试这个,看看会发生什么。

对此有何合理解释? Android reference明确表示onListItemClick的 v 参数为:

  

在ListView中单击的视图

由于

0 个答案:

没有答案