【问题标题】:getText() on a TextView returns an empty stringTextView 上的 getText() 返回一个空字符串
【发布时间】:2016-06-03 10:07:33
【问题描述】:

我将开始向您展示代码。

lv = (ListView) findViewById(android.R.id.list);

//Updating parsed JSON data into ListView
 ListAdapter adapter = new SimpleAdapter(
          this, locationsList,
          R.layout.list_results, new String[]{
          TAG_NATION, TAG_CITY, TAG_NAME, TAG_TYPE, TAG_PRICERANGE, TAG_ID, TAG_IMAGE},
          new int[]{R.id.tvResNation, R.id.tvResCity, R.id.tvResName, R.id.tvResType, R.id.tvResPrice, R.id.tvResID,
                        R.id.ivResImage1});


lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Intent in = new Intent(ResultsActivity.this, LocationActivity.class);
                String resID = ((TextView) view.findViewById(R.id.tvResID)).getText().toString();
                String resName = ((TextView) view.findViewById(R.id.tvResName)).getText().toString();
                String resNation = ((TextView) view.findViewById(R.id.tvResNation)).getText().toString();
                String resCity = ((TextView) view.findViewById(R.id.tvResCity)).getText().toString();
                String resType = ((TextView) view.findViewById(R.id.tvResType)).getText().toString();
                in.putExtra(TAG_ID, resID);
                in.putExtra(TAG_NAME, resName);
                in.putExtra(TAG_TYPE, resType);
                in.putExtra(TAG_NATION, resNation);
                in.putExtra(TAG_CITY, resCity);
                startActivity(in);
            }
        });

我们在适配器上设置的所有属性都由我们转换为哈希图的 JSONObject 检索(我们已验证所有属性都具有正确的值)。

一旦使用该哈希图在适配器上设置属性(?),属性resID 显然不是。从 ID 为 R.id.tvResIDtextView 中,我们总是使用 getText() 收到一个空字符串。

有趣的是,所有的属性在设置适配器之前都有一个值,而除了 ID 之外的所有其他属性都在侦听器内部检索...

这是适配器的 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.66">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tvResNation"
                android:layout_marginRight="10dp"
                android:textStyle="bold"
                android:textColor="#000000" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tvResCity"
                android:layout_marginRight="10dp"
                android:textStyle="bold"
                android:textColor="#000000" />

        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tvResName"
                android:layout_marginRight="10dp"
                android:textStyle="bold"
                android:textColor="#000000" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tvResType"
                android:layout_marginRight="10dp"
                android:textStyle="bold"
                android:textColor="#000000" />

        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tvResPrice"
                android:layout_marginRight="10dp"
                android:textStyle="bold"
                android:textColor="#000000" />

        </LinearLayout>

    </LinearLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ivResImage1"
        android:layout_weight="0.33" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvResID"
        android:layout_marginRight="10dp"
        android:textStyle="bold"
        android:textColor="#000000"/>

</LinearLayout>

已解决 我们在代码的另一部分设置了适配器,并且缺少一个字段...

【问题讨论】:

  • 这样应该更好
  • String resID 替换 TextView resID
  • 它是 tvResID 而不是 resID 像字符串
  • 看看你的 xml 或代码可能是这个 id 在某处使用
  • 已编辑。一切对我来说似乎都很好......

标签: android textview listener listadapter


【解决方案1】:

你可以试试,

TextView txtView = (TextView) view.findViewById(R.id.tvResID);
String str = txtView.getText().toString();
Log.i("TAG", "Text is : " + str);

这应该可行。

编辑 1

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tvResID"
    android:layout_marginRight="10dp"
    android:textStyle="bold"
    android:text="hello world!!!"
    android:textColor="#000000"/>

之后你会得到

你好世界!!!

【讨论】:

  • 检查 tvResID 是否包含任何字符串或空的 TextView?
  • 查找 tvResID 上的文本是什么?
  • 是的。问题是适配器
  • 如您所见,我们使用了 SimpleAdapter
【解决方案2】:

试试这个代码:

String text = (String) mListView.getItemAtPosition(position);

【讨论】:

    猜你喜欢
    • 2014-01-30
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多