我想通过TextView传递将在运行时生成的值.text属性用于其他一些数据,我想要传递的数据不会显示.所以,它就像一个隐藏的标签.是否可以使用TextView?如果是这样,TextView的哪个属性.
为简单起见,我想从数据表中提取ID和TEXT.现在TEXT显示在TextView上,但是当我想将对该表的特定行的引用传递给其他函数时,我想将ID作为参数/句柄传递.因此,ID将被隐藏并与TextView相关联.我该怎么做?如果不可能,您可以建议任何替代方案来实现这一目标 顺便说一句,TextView嵌入在ListView中.
适配器代码:
cursor = db.rawQuery("SELECT * FROM EmpTable", null);
adapter = new SimpleCursorAdapter(
this,
R.layout.item_row,
cursor,
new String[] {"Emp_Name"},
new int[] {R.id.txtEmployee});
Run Code Online (Sandbox Code Playgroud)
Mat*_*lis 42
尝试使用setTag(int,Object)和getTag(int).如果您只想存储一个值,甚至还有一些不带密钥的版本.来自文档:
设置与此视图关联的标记.标记可用于标记其层次结构中的视图,并且不必在层次结构中是唯一的.标签还可用于在视图中存储数据,而无需借助其他数据结构.
所以你可以这样做:
textView.setTag(myValue);
Run Code Online (Sandbox Code Playgroud)
并在以后获得它:
myValue = textView.getTag();
Run Code Online (Sandbox Code Playgroud)
由于界面使用Object,您将需要添加强制转换.例如,如果您的值是int:
textView.setTag(Integer.valueOf(myInt));
Run Code Online (Sandbox Code Playgroud)
和:
myInt = (Integer) textView.getTag();
Run Code Online (Sandbox Code Playgroud)
编辑 - 要子类化并添加标记,请使用:
adapter = new SimpleCursorAdapter(this, R.layout.item_row,
cursor, new String[] {"Emp_Name"}, new int[] R.id.txtEmployee}) {
@Override
public View getView (int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
view.setTag(someValue);
return view;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38083 次 |
| 最近记录: |