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
,我需要识别witchTextViews
用户触摸来更改他们的文本和背景颜色。
问题是,我将输入的数据保存在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");