setOnItemClickListener不适用于Fragment

时间:2014-12-22 17:02:01

标签: android listview fragment listener

我有一个扩展Fragment的课程。我有ListView。当我点击一个项目时,它总是返回相同的项目。 这里是ListView适配器的row.xml。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:id="@+id/IdItem"/>
</LinearLayout>

活动在这里:

myListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id){
                    myTextView = (TextView)getActivity().findViewById(R.id.IdItem);
                    String IdItem = myTextView.getText().toString();
                    Intent intent = new Intent(getActivity(), NextActivity.class);
                    intent.putExtra("IdItem", IdItem);

                    startActivity(intent);
                }
            });

它总是返回相同的IdItem,而不是选择的IdItem。

1 个答案:

答案 0 :(得分:1)

改变这个:

myTextView = (TextView)getActivity().findViewById(R.id.IdItem);

为此:

myTextView = view.findViewById(R.id.IdItem);

为了节省内存,重用了ListView的行对象,因此需要使用在ListView的onItemClick方法中发送的View对象。此View对象表示ListView中具有当前子视图和值的实际单击行。