TextView setText无法使用SQLite中的字符串

时间:2015-09-21 01:34:05

标签: android android-sqlite textview settext

我在布局中有一个以编程方式创建的TextView。

String dataname;
dataname="test name";

TextView tv = new TextView(this);
tv.setText(dataname);

这可以按预期工作。

如果我从SQL数据库设置dataname,它就不起作用。以下是提取数据的代码段。

表类声明包括:

public class TblTest {
     private int     _id;
     private String  _name;

返回字段的函数

public String get_name() {
    return this._name;
}

修改后的电话"应该"将数据放入TextView

String dataname;

String dataname=test.get_name();

Log.i("TESTLOG","dataname="+dataname);

TextView tv = new TextView(this);
tv.setText(dataname);

TESTLOG在dataname变量中显示数据库中的正确名称。 TextView显示它出现的单个像素字符(很难说)。

不确定为什么会这样。有什么建议吗?

其他信息09/21/15

数据库代码与编辑活动一起使用...包括名称字段。我可以将它设置为像这样的EditView ......

etName = (EditText) findViewById(R.id.etName);
etName.setText(test.get_name());

使用以下内容在SQL rawQuery期间从数据库设置_name字段...

test.set_name(cursor.getString(cursor.getColumnIndex(TEST_FLD_NAME)));

并且set_name函数读取...

public void set_name(String name){
    this._name=name;
}

TextView tv在设置为RelativeLayout with ...

后立即添加
        testrl.addView(tv);

具有未以编程方式添加的主布局的XML文件看起来像这样......

<ScrollView
    android:layout_width="fill_parent"
    android:paddingTop="5dp"
    android:layout_height="0dp"
    android:layout_weight="1.30"
    >

    <LinearLayout
        android:id="@+id/llTest"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
    </LinearLayout>
</ScrollView>

以编程方式输入代码......

LinearLayout scrolllayout = (LinearLayout) findViewById(R.id.llTest);
RelativeLayout testrl = new RelativeLayout(this);
RelativeLayout.LayoutParams tvp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

// code above for setting TextView is here

scrolllayout.addView(testrl,tvp);

请记住这看起来很奇怪:

  • 数据库代码的工作方式与其他活动相同
  • Log.i显示dataname变量在setText之前包含来自数据库的正确数据
  • 如果我手动填写数据名称,它会在TextView tv中正确显示
  • 只有当数据名称来自数据库时,它才会失败,即使它有名称(同样,根据Log.i)

希望这也有帮助......

1 个答案:

答案 0 :(得分:0)

对于其他使用此问题寻求帮助的人,我想出了解决问题的方法,但不确定为什么它没有按照我的方式工作。 LayoutParam读取...

RelativeLayout.LayoutParams tvp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

无论出于何种原因,它都需要......

RelativeLayout.LayoutParams tvp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

希望能帮助其他人......虽然我真的很想知道为什么宽度的WRAP_CONTENT不起作用。