AdapterView.OnItemClickListener() 未解雇
AdapterView.OnItemClickListener() not fired
我的适配器是这样设置的:
userList = (ListView) activity.findViewById(R.id.userList);
userListAdapter = new UserListAdapter(this, R.layout.user_list, getUserList());
userList.setAdapter(userListAdapter);
function getUserList() return ArrayList UserList
这样列表显示就没问题了
但是当我这样做时:
userList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("MyTag","kkkkkkkkkkkkkkkkk");
}
});
Log.d 未被触发。
我查了一下控制台是显示 D/AbsListView: onTouchUp() mTouchMode : 1
我的 Xmls activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/userList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="MainActivity"
tools:showIn="@layout/activity_main">
</ListView>
user_list.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="wrap_content"
android:padding="10dp"
android:weightSum="60"
android:orientation="horizontal">
<TextView
android:id="@+id/nom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="20"/>
<TextView
android:id="@+id/type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="20"/>
<Button
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10"
android:hint="Upd"/>
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10"
android:hint="Del"/>
</LinearLayout>
在你的适配器中为处理点击事件创建一个接口,如下代码..
onItemClickListner onItemClickListner;
public void setOnItemClickListner(UserAdapter.onItemClickListner onItemClickListner) {
this.onItemClickListner = onItemClickListner;
}
public interface onItemClickListner{
public void onItemClick();
}
当任何控件用于单击事件(如孔布局单击事件)时,在适配器中的代码下方使用......在适配器 getView() 方法中
LinearLayout linearLayout=view.findViewById(R.id.linearLayout);
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListner.onItemClick();
}
});
当您在列表视图中绑定适配器然后在下面调用之后...
userListAdapter.setOnItemClickListner(new UserAdapter.onItemClickListner() {
@Override
public void onItemClick() {
Toast.makeText(getApplicationContext(),"Hello world",Toast.LENGTH_SHORT).show();
}
});
我的适配器是这样设置的:
userList = (ListView) activity.findViewById(R.id.userList);
userListAdapter = new UserListAdapter(this, R.layout.user_list, getUserList());
userList.setAdapter(userListAdapter);
function getUserList() return ArrayList UserList
这样列表显示就没问题了
但是当我这样做时:
userList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("MyTag","kkkkkkkkkkkkkkkkk");
}
});
Log.d 未被触发。 我查了一下控制台是显示 D/AbsListView: onTouchUp() mTouchMode : 1
我的 Xmls activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/userList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="MainActivity"
tools:showIn="@layout/activity_main">
</ListView>
user_list.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="wrap_content"
android:padding="10dp"
android:weightSum="60"
android:orientation="horizontal">
<TextView
android:id="@+id/nom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="20"/>
<TextView
android:id="@+id/type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="20"/>
<Button
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10"
android:hint="Upd"/>
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10"
android:hint="Del"/>
</LinearLayout>
在你的适配器中为处理点击事件创建一个接口,如下代码..
onItemClickListner onItemClickListner;
public void setOnItemClickListner(UserAdapter.onItemClickListner onItemClickListner) {
this.onItemClickListner = onItemClickListner;
}
public interface onItemClickListner{
public void onItemClick();
}
当任何控件用于单击事件(如孔布局单击事件)时,在适配器中的代码下方使用......在适配器 getView() 方法中
LinearLayout linearLayout=view.findViewById(R.id.linearLayout);
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListner.onItemClick();
}
});
当您在列表视图中绑定适配器然后在下面调用之后...
userListAdapter.setOnItemClickListner(new UserAdapter.onItemClickListner() {
@Override
public void onItemClick() {
Toast.makeText(getApplicationContext(),"Hello world",Toast.LENGTH_SHORT).show();
}
});