从列表适配器访问子视图

时间:2011-08-30 19:45:05

标签: android android-listview

我正在尝试突出显示ListView(可触摸界面)中的项目。目的是用户将触摸图像,它将选择ListView中的项目将其移动以显示(它不会同时显示在屏幕上),然后突出显示{ {1}}通过更改项目视图的背景颜色与图像上的位置相关。我有一个自定义ListView,其中包含每个项目的视图。

从图像我可以得到ListAdapter中项目的位置。从此我可以致电ListView。这会将项目置于列表顶部。但是我现在想要获得这个项目的视图;我已经尝试了listView.setSelection(selectedPos)但是看起来在列出布局之前这是不可用的(我正在响应图像上的点击)所以我不能使用它。

我尝试的其他任何东西都没有用 - 我想做的就是做getFirstVisiblePosition()这样的事情,但我找不到办法。因为我处于可触摸模式,所以无法使用“已选择”。

看似简单的事情 - 我浪费了一天;任何帮助将不胜感激!

干杯,

尼尔

3 个答案:

答案 0 :(得分:1)

不应该listView.getChildAt(position)做你想做的事吗?

答案 1 :(得分:0)

尝试为列表视图创建自己的自定义适配器。例如:

 private class CustomAdapter extends ArrayAdapter<RowData> {
       public CustomAdapter(Context context, int resource, List<RowData> objects) { 
            super(context, resource, objects);
       }
       @Override
       public View getView(int position, View convertView, ViewGroup parent) { 
            //convertView holds the view for each item.
            TextView txt = (TextView)convertView.findViewById(R.id.button);
            //do some other stuff with the views
            return convertView;
       }
}

答案 2 :(得分:0)

我通过以下方式解决了这个问题:

  • 我首先通过添加我自己的方法
  • 标记了我希望在适配器中选择的项目
  • 然后,当请求视图时,我可以检查视图是否适用于我请求的位置
  • 然后我修改GetView返回的呈现视图

    这似乎是最简单的选择。