Android - 将数据附加到视图

Posted

技术标签:

【中文标题】Android - 将数据附加到视图【英文标题】:Android - attach data to views 【发布时间】:2011-02-11 06:53:09 【问题描述】:

在我的应用程序中,我在表中创建动态行,就像在本教程中一样: http://en.androidwiki.com/wiki/Dynamically_adding_rows_to_TableLayout

 for(int i = startDay; i < startDay + 7; i++)

      /* Create a TextView to be the row-content. */
      TextView day = new TextView(this);
      day.setText(Integer.toString(i));
      day.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

      day.setOnClickListener(new OnClickListener() 
          @Override
          public void onClick(View v) 
              Log.i("Listener: ", "Click");
          

所以现在当我点击 TextView 时,我可以注册点击事件,但我如何确定点击了哪个 TextView?

不仅仅是我通过事件获得的对象,而是点击了哪一天数字之类的数据?

理想情况下,我希望将数据附加到我动态创建的每个视图。 类似于 javascript jQuery 中的 data() 方法。

现在我只能看到一种解决此问题的方法 - 在创建 TextView 时添加带有数据的 id 并在单击时 - 取回 id 并解析它以获取我的数据。但我觉得这种做法很丑陋。

有没有办法将任意数据附加到 android 视图?

【问题讨论】:

【参考方案1】:

通过查看方法找到答案。也许它会对某人有用。

我需要的方法是:

setTag() 和 getTag()

http://developer.android.com/reference/android/view/View.html#setTag%28java.lang.Object%29

【讨论】:

如果我需要多个数据会怎样?不只是一个标签? @FranciscoCorralesMorales 您可以添加多个标签,每个标签都由一个 int 键标识。 @FranciscoCorralesMorales 您可以将唯一对象标识符列表添加到标签中。 @FranciscoCorralesMorales 或者你可以使用一些收藏,比如HashMap&lt;Key, Val&gt;

以上是关于Android - 将数据附加到视图的主要内容,如果未能解决你的问题,请参考以下文章

将视图附加到Android中的自定义RelativeLayout

将自定义视图附加到 Android 键盘的顶部

Android在活动视图中附加片段获取片段已添加错误

Android view.setid(View.generateViewId()) 不起作用。它找不到附加到的视图

android如何跨片段分离/附加保留视图状态

如何将私人数据附加到 android 日历事件