我有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的文本和背景。
答案 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单击你的适配器,这个想法仍然是一样的。或者您可以直接从列表项中单击。