【发布时间】: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.tvResID 的 textView 中,我们总是使用 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