Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在TableLayout中查找触摸文本视图的位置_Android_Android Tablelayout - Fatal编程技术网

Android在TableLayout中查找触摸文本视图的位置

Android在TableLayout中查找触摸文本视图的位置,android,android-tablelayout,Android,Android Tablelayout,我有一个TableLayout和60个TextViews,我需要识别witchTextViews用户触摸来更改他们的文本和背景颜色。 问题是,我将输入的数据保存在sqlite数据库中,不知道用户启动应用程序时如何加载TableView中的内容。 我尝试使用数据库中保存的ID,但效果不好。 我该怎么做? 有什么想法吗 如果用户按1:1行:列的位置触摸文本视图,我怎么知道这一点? 如果我知道onCreate方法中的Row:Column,我可以将新更改的textview TableLayout的一些x

我有一个
TableLayout
和60个
TextViews
,我需要识别witch
TextViews
用户触摸来更改他们的文本和背景颜色。 问题是,我将输入的数据保存在sqlite数据库中,不知道用户启动应用程序时如何加载
TableView
中的内容。 我尝试使用数据库中保存的ID,但效果不好。 我该怎么做? 有什么想法吗

如果用户按1:1行:列的位置触摸
文本视图
,我怎么知道这一点? 如果我知道
onCreate
方法中的Row:Column,我可以将新更改的
textview

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>


使用addMaterial方法,我可以更改文本视图的文本和背景。

您知道从该方法中单击了哪个文本视图:

 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()方法:


编辑:正如@Fondesa所说,如果版面中有这么多文本视图,最好使用listview/gridview,但在适配器中单击文本视图的想法仍然是一样的。或者您可以直接从列表项中单击。

您是否尝试在文本视图中使用onClickListener或onTouchListener?如果您想知道单击了哪个textview,那么您可以使用它们并获得所需的结果。Dario,您必须在textview上处理60个onClick方法。在这种情况下,我强烈建议您使用GridView、ListView或RecyclerView。Dario,piuttosto che usare 60文本视图,cui devi gestire 60 onClick,usa una gridview o una listview@不,我不知道,但现在我试着用这个。他们返回位置???@Fondesa Ok,我尝试使用GridView、ListView或RecyclerView。在意大利/英格尔塞地区,这是一个非常好的选择。Sono nuovo con Android quindi inesperto,proveròi布局图suggerito@Dario在fondo的fondo中,根据价格逐渐调整,在部分合同中考虑网格视图和阵列,并根据视图持有人模式进行调整。在这方面,我考虑了回收利用、新的相对性、记忆管理的前景以及实施之前的困难。我需要设置标签,否则就太糟了?任何TextView都有标签吗?或者我必须在使用getTag()之前设置标记?默认情况下,控件没有任何标记。仅当需要有关要使用onClick的特定textView的一些信息时,才可以使用seTag()。例如,如果要从数据库中设置对象的名称,可以使用setText,但如果希望保留整个数据库对象,你把它放在文本视图的标记中。所以当我点击某个文本视图并想保存哪个文本视图时,我可以从该文本视图中设置一个标记,以便在布局中找到它。对吗?如果我正确理解了你想要做什么,在布局中,你可以通过id找到textview。如果你想保存你点击的内容,你可以保存id,然后使用findViewById。
TextView textView1 = (TextView) findViewById(R.id.h1);
if(textView1) != null
textView1.setTag("whatever object you need");