【问题标题】:how to handle click event on each cell of a table layout如何处理表格布局的每个单元格上的点击事件
【发布时间】:2011-09-28 14:50:44
【问题描述】:

我有一个像this one 一样简单的表格布局。

我需要的是允许最终用户单击表格的每个单元格,并对每个单元格执行某些操作。

但是,android table layout似乎只支持基于click事件的row,不支持基于click事件的cell。如何摆脱这个?

【问题讨论】:

    标签: android android-layout android-emulator android-widget


    【解决方案1】:

    您需要在 XML 布局定义文件中使用 android:clickable="true"android:onClick="clickHandlerCell" 处理点击事件,在我的例子中是 LinearLayout。

    要识别单击了哪个单元格,您可以在创建每个单元格时使用view.setTag(uniqueID) 标记每个单元格的视图。在 clickHandlerCell 函数中使用view.getTag() 来获取您的单元格的身份。

    【讨论】:

    • 如果我在 clickHanderCell 函数中使用view.getTag(),它只会返回表格的标签而不是单元格。如何获取单元格的标签?
    • @Oli,不,它返回一个单元格标签。当您在 TableRow 中创建 TextView 时,您可以编写:textView.setTag(10)。然后创建一个监听器:textView.setOnClickListener(...); 。在里面你可以用int i = (int) v.getTag()收到那10个。
    【解决方案2】:

    试试这个代码点击特定的表格行:

    TableLayout contact_table = (TableLayout)findViewById(R.id.contact_table);
    final View row=contact_table.getChildAt(i);
    row.setOnClickListener(new OnClickListener(){
    
        @Override
        public void onClick(View v){
            // TODO Auto-generated method stub
            row_id=contact_table.indexOfChild(row);
        }
    });
    

    【讨论】:

    • 那个 row_id 并不能帮助 OP 确定该行上的哪个单元格被点击了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2011-09-11
    • 2019-12-23
    相关资源
    最近更新 更多