【问题标题】:How to get a ListView's child view at specific index如何在特定索引处获取 ListView 的子视图
【发布时间】:2014-10-13 08:24:21
【问题描述】:

我需要在特定索引处动态更改ListView 的子视图的背景颜色。所以我需要在应用背景之前先获取视图。

我已经尝试了以下方法。

getViewAt(int index) - 这不适用于ListView

getChildAt(int index) - 这会导致运行时 NPE 错误

Google 搜索返回不相关的结果。

请帮帮我。谢谢。

【问题讨论】:

  • 您需要在自定义适配器的 getView 方法上执行此操作。检查位置是否与您要更改的位置相同并应用您的背景更改。
  • 您可以使用 adapter.getView() 但您可能希望在 getView() 本身上这样做
  • listView.getChildAt(index); 应该可以工作。显示代码和异常跟踪。
  • A Google search returns irrelevant results. 我怀疑您是否真的搜索过,因为我搜索过并获得了很多相关结果。

标签: android android-listview android-view


【解决方案1】:

我想出了如何做到这一点。

我真的认为不必为类似于“如何设置背景图像”的问题发布代码和 logcat。

无论如何,我的回答是,简而言之,通过适配器的 getView() 将位置设置为列表视图中每个子项的标记,然后使用 findViewWithTag(Object tag) 获取任何子项。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    convertView = (LinearLayout)inflater.inflate(R.layout.some_layout, parent, false);        .
    convertView.setTag(String.valueOf(position));
}

无论何时您需要获得特定的孩子。

View v = mylistview.findViewWithTag(String.valueOf(index));

改变背景颜色。

v.setBackgroundResource(R.color.some_color);

【讨论】:

  • 这是我所期待的答案。这正是标题所要求的。那么无论是谁将此标记为重复,你能告诉我这个答案是否与这个重复的问题有关吗?
【解决方案2】:

使用 ViewGroup 中的 getChildAt(index) 获取 View。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多