在ListView中获取字符串

时间:2014-01-30 16:46:01

标签: android listview

好的,我有一个ListView,每个项目视图有两个TextView。

enter image description here

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?
        }
});

3 个答案:

答案 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();
}