Android在TableLayout中查找触摸TextView的位置

时间:2015-04-09 14:46:55

标签: android android-tablelayout

我有TableLayout 60 TextViews,我需要识别用户触摸的女巫TextViews以更改其文字和背景颜色。 问题是我在sqlite数据库中保存了输入的数据,并且我不知道当用户启动应用程序时如何在TableView内加载内容。 我尝试使用保存在数据库中的ID,但它并不好。 我怎样才能做到这一点? 有什么想法吗?

如果用户触摸位置1:1中的TextView行:列我怎么知道这个? 如果我知道onCreate方法中的行:列,我可以插入TableView新更改的TextViews

TableLayout的一些xml:

<TableRow
                android:id="@+id/prima_riga"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
                <TextView
                    android:id="@+id/h1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="1"
                    android:textColor="@color/text_orario"
                    android:textAppearance="?android:attr/textAppearanceLarge" />
                <TextView
                    android:id="@+id/mat11"
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:gravity="center"
                    android:clickable="true"
                    android:onClick="addMateria"
                    android:background="@color/grigio_chiaro"
                    android:text=""/>
                <TextView
                    android:id="@+id/mat12"
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="33dp"
                    android:gravity="center"
                    android:clickable="true"
                    android:onClick="addMateria"
                    android:background="@color/grigio_chiaro"
                    android:text="" />
                <TextView
                    android:id="@+id/mat13"
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="33dp"
                    android:gravity="center"
                    android:clickable="true"
                    android:onClick="addMateria"
                    android:background="@color/grigio_chiaro"
                    android:text="" />
                <TextView
                    android:id="@+id/mat14"
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="33dp"
                    android:gravity="center"
                    android:clickable="true"
                    android:onClick="addMateria"
                    android:background="@color/grigio_chiaro"
                    android:text="" />
                <TextView
                    android:id="@+id/mat15"
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="33dp"
                    android:gravity="center"
                    android:clickable="true"
                    android:onClick="addMateria"
                    android:background="@color/grigio_chiaro"
                    android:text="" />
                <TextView
                    android:id="@+id/mat16"
                    android:layout_width="50dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="33dp"
                    android:gravity="center"
                    android:clickable="true"
                    android:onClick="addMateria"
                    android:background="@color/grigio_chiaro"
                    android:text="" />
            </TableRow>

使用addMateria方法,我可以更改TextViews的文本和背景。

1 个答案:

答案 0 :(得分:0)

您知道从方法中点击了哪个textView:

 public void onClick(View v)
   {
        // do something with the textView

        TextView textView = (TextView) v;
        var tag = textView.getTag();

        // do something with the tag if needed
   } 

如果您需要在textView中放置一些信息,只需使用setTag()方法:

TextView textView1 = (TextView) findViewById(R.id.h1);
if(textView1) != null
textView1.setTag("whatever object you need");
编辑:正如@Fondesa所说,如果您的布局中有如此多的textViews,最好使用listview / gridview,但是对于textView单击你的适配器,这个想法仍然是一样的。或者您可以直接从列表项中单击。