2012-12-31 43 views
0

这是我的问题:ListView OnClickListener

我有一个chatapplication和消息显示在一个ListView中。 ListView填充屏幕的特定部分。 如果用户单击ListView,则应显示输入对话框。我的问题是,我只能用onItemClickListener识别ListView上的点击,但是当应用程序启动时,没有项目可以在ListView中单击。

我想到了在ListView控件按钮:

<FrameLayout 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:orientation="vertical" 
android:layout_marginTop="10dip" 
> 

    <ListView 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:id="@+id/ver_list" 
    android:stackFromBottom="true" 
    android:cacheColorHint="#00000000" 
    android:transcriptMode="alwaysScroll"> 
    </ListView> 

    <Button 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:id="@+id/ver_listbutton" 
    android:background="@null"></Button> </FrameLayout> 

现在我可以承认在ListView控件与在它的按键空间点击。

但随着FrameLayout我无法滚动ListView,因为它在按钮下方。

有没有人有解决方案?

回答

3

您可以设置按钮,通过ListView的空视图,

public void setEmptyView(View emptyView) 

当列表视图是空的,空视图将显示与处理click事件,当有列表视图项,外置热交换器空视图会dispear,然后listview可以处理点击事件。

+0

好吧,这对于空的ListView效果很好。但是,我怎么能处理在ListView的区域点击,如果ListView控件具有entrys呢?一个完整的ListView我可以使用onItemClickListener,但是ListView上面有空间,当它没有满的时候,我怎样才能处理这个空闲空间的点击? – Gingerbread123321

+0

如果listview有条目,空视图就会消失,你可以处理点击事件onItemClickListener如果列表视图条目不填满一个屏幕,你可以添加一个透明视图作为listview的页脚视图,并让脚视图处理点击事件,你需要计算的高度在这种情况下手动透明视图。 –

+0

好的谢谢你的帮助。我用这个计算了listView的高度:[link](http://iserveandroid.blogspot.de/2011/06/how-to-calculate-lsitviews-total.html)。然后我动态计算了我的标题视图的高度。 – Gingerbread123321

-1

listView.setOnTouchListener(新OnTouchListener(){

 @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      ListView list = (ListView) v; 
      View child = list.getChildAt(list.getLastVisiblePosition()); 
      if (child != null) { 
       int[] coords = new int[2]; 
       child.getLocationOnScreen(coords); 
       if (event.getRawY() > coords[1] + child.getHeight()+20) { 
        //DO YOU STUFF 
        Toast.makeText(activity, "Outsize", Toast.LENGTH_SHORT).show(); 
        return true;//you have handled the click, listview will not handle it 
       } 
      } 

      return false; // listView handles click 
     } 
    }); 
相关问题