在ListView的X位置获取View

时间:2011-12-12 02:36:03

标签: java android listview

如何在ListView中的位置X检索视图?我不想膨胀一个新的,只需检索屏幕中可见的单元格以编程方式更改一些参数

3 个答案:

答案 0 :(得分:2)

由于ListView中的视图被重新使用/重新循环。没有从ListView获取视图引用的直接方法。

如果您想要访问视图,则需要扩展ArrayAdapter,然后覆盖getView。在那里你应该调用super.getView并编写自己的自定义代码。

如果我们真的需要控制而不是尝试扩展BaseAdapterCursorAdapter

答案 1 :(得分:1)

找到一个肮脏的解决方案:

  1. 您应该能够识别生成的每一行。例如,在生成(或回收行)时添加带有visibility = gone的TextView并在其中写入唯一值
  2. 在listactivity中调用getListView.setSelection(position)到所需的单元格
  3. 调查行的列表视图列表(直到显示)

    lv=getListView();
    for (int i=0;i <lv.getChildCount();i++){
       if (((TextView)lv.findViewById(R.id.my_hidden_textview)).getText.equals(mykey)){
       // view found
       } else {
       // schedule another survey "soon"
       }
     }
    

    对于时间表,您可以使用以下内容:

    final int RETRY_DELAY=100;
    new Handler(){
        public void handleMessage(Message msg){
           if (msg.what<0) return; //something went wrong and retries expired
                   lv=getListView();
           for (int i=0;i <lv.getChildCount();i++){
             if (((TextView)lv.findViewById(R.id.my_hidden_textview)).getText.equals(mykey)){
                //result = lv.findViewById(R.id.my_hidden_textview);
             } else {
                this.sendEmptyMessageDelayed(msg.what-1,RETRY_DELAY);
             }
           }     
        }
    }.sendEmptyMessageDelayed(10,RETRY_DELAY);
    
  4. 正如我所说,这是一个非常难看的解决方案,但它有效

答案 2 :(得分:1)

我没有清楚地了解你的问题。但据我所知,我建议你在线性布局中使用框架布局。您可以使用其他框架布局来进行操作。