TextView中的隐藏字段/标记?

red*_*lue 27 android textview

我想通过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)

  • 您可以子类化适配器并覆盖`getView`来设置标记. (2认同)

Ted*_*opp 6

你可以使用setTag()getTag().