我有一个扩展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。
答案 0 :(得分:1)
改变这个:
myTextView = (TextView)getActivity().findViewById(R.id.IdItem);
为此:
myTextView = view.findViewById(R.id.IdItem);
为了节省内存,重用了ListView的行对象,因此需要使用在ListView的onItemClick方法中发送的View对象。此View对象表示ListView中具有当前子视图和值的实际单击行。