好的,我有一个ListView,每个项目视图有两个TextView。
TextView unique_id保存数字3和4,而TextView dateTime保存日期和时间低于3和4.
现在我要做的是,例如,我点击第一项,我将获得“3”字符串。或者,如果我选择第二项,我将获得“4”字符串。我怎么能这样做?
displayview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/unique_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/dateTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:padding="5dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:textStyle="bold" />
</LinearLayout>
MainActivity
ListView lv = (ListView) findViewById(R.id.list);
adapter = new SimpleAdapter(MainActivity.this, data, R.layout.displayview, new String[]{"unique_id","dateTime"}, new int[]{R.id.unique_id,R.id.dateTime});
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int arg2, long arg3) {
// What will I put here to get those strings?
}
});
答案 0 :(得分:3)
使用包含数据的data
列表。像这样:
String value = data.get(arg2).get("unique_id");
控制器从模型中获取数据总是更好,而不是从视图中获取数据,因为您可能已经调整了内容以使其在视图中看起来更好(截断,舍入,添加HTML部分......)
注意:arg2
参数是所选项目列表中的位置。
答案 1 :(得分:1)
使用
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int arg2, long arg3) {
TextView tv= (TextView)view.findViewById(R.id.unique_id); // initialize
String value = tv.getText().toString(); // get text from textview
}
});
编辑:
您也可以使用
String value = data.get(arg2).get("unique_id");
您可以避免在njzk2发布时初始化textview。
注意:使用第二种方法是更好的选择,因为您不会初始化视图。
答案 2 :(得分:1)
为了帮助您更清楚地理解onItemClick
方法,让我们以更加理解的方式更改变量名称
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
TextView unique_id = (TextView) view.findViewById(R.id.unique_id);
String unique_id_Value = unique_id.getText().toString();
}