Android Studio ListView 只有 1 次可点击
Android Studio ListView Only 1 Time Clickable
我创建了一个 class“用户”并添加了一些名称。
接下来我为 ListView 创建了一个 ArrayAdapter 并连接它们。
但我不会只点击一次项目。我做不到。
我怎样才能在列表视图项目中只点击一次?
请用示例代码显示它?
//Adapter
//ListView Adapter
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_user,
usersArrayList.stream().map(users -> users.name).collect(Collectors.toList()));
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(MainScreenActivity.this, PointActivity.class);
intent.putExtra("Userr", usersArrayList.get(i));
startActivity(intent);
}
});
您可以向您的用户添加一个布尔标志 class。第一次单击特定项目后,只需将该标志设置为 true 并在每次该标志为 true 或 false 时检查它。如果为 false,则处理点击事件,否则忽略它。
希望对您有所帮助。
此致,
酒精度
可以通过几种方式完成。但是对于您的案例来说,最简单的方法是为点击的项目添加一个布尔字段。但请注意,您需要根据需要管理此文件。例如,如果您希望每次应用程序启动时都可以点击这些项目,那么最初您必须将每个用户的点击变量设置为 false。
用户class
public class User {
//...
public boolean clicked;
//...
}
在 activity 设置项目点击侦听器的地方
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
User user = usersArrayList.get(i);
if(user == null) {
// Make a Log here informing that the user object null
return; // Don't proceed
}
if(user.clicked) return; // This user is already clicked, don't proceed
// If the user is not clicked then set the clicked to true and proceed
user.clicked = true;
// You may want to save or update the modified user here
Intent intent = new Intent(MainScreenActivity.this, PointActivity.class);
intent.putExtra("Userr", user);
startActivity(intent);
}
});
如果你使用数据库或者其他东西,并且你想保存用户的点击状态,不要忘记在每次修改点击时保存或更新修改后的用户对象属性。
喜欢,
Class User{
.....
bool isItemClicked = false;
}
//Adapter
//ListView Adapter
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_user,
usersArrayList.stream().map(users -> users.name).collect(Collectors.toList()));
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
User clickedUser = usersArrayList.get(i);
if(!clickedUser.isItemClicked ){
clickedUser.isItemClicked = true;
Intent intent = new Intent(MainScreenActivity.this, PointActivity.class);
intent.putExtra("Userr", usersArrayList.get(i));
startActivity(intent);}
}
});
我创建了一个 class“用户”并添加了一些名称。 接下来我为 ListView 创建了一个 ArrayAdapter 并连接它们。 但我不会只点击一次项目。我做不到。 我怎样才能在列表视图项目中只点击一次? 请用示例代码显示它?
//Adapter
//ListView Adapter
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_user,
usersArrayList.stream().map(users -> users.name).collect(Collectors.toList()));
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(MainScreenActivity.this, PointActivity.class);
intent.putExtra("Userr", usersArrayList.get(i));
startActivity(intent);
}
});
您可以向您的用户添加一个布尔标志 class。第一次单击特定项目后,只需将该标志设置为 true 并在每次该标志为 true 或 false 时检查它。如果为 false,则处理点击事件,否则忽略它。
希望对您有所帮助。
此致, 酒精度
可以通过几种方式完成。但是对于您的案例来说,最简单的方法是为点击的项目添加一个布尔字段。但请注意,您需要根据需要管理此文件。例如,如果您希望每次应用程序启动时都可以点击这些项目,那么最初您必须将每个用户的点击变量设置为 false。
用户class
public class User {
//...
public boolean clicked;
//...
}
在 activity 设置项目点击侦听器的地方
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
User user = usersArrayList.get(i);
if(user == null) {
// Make a Log here informing that the user object null
return; // Don't proceed
}
if(user.clicked) return; // This user is already clicked, don't proceed
// If the user is not clicked then set the clicked to true and proceed
user.clicked = true;
// You may want to save or update the modified user here
Intent intent = new Intent(MainScreenActivity.this, PointActivity.class);
intent.putExtra("Userr", user);
startActivity(intent);
}
});
如果你使用数据库或者其他东西,并且你想保存用户的点击状态,不要忘记在每次修改点击时保存或更新修改后的用户对象属性。
喜欢,
Class User{
.....
bool isItemClicked = false;
}
//Adapter
//ListView Adapter
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.list_user,
usersArrayList.stream().map(users -> users.name).collect(Collectors.toList()));
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
User clickedUser = usersArrayList.get(i);
if(!clickedUser.isItemClicked ){
clickedUser.isItemClicked = true;
Intent intent = new Intent(MainScreenActivity.this, PointActivity.class);
intent.putExtra("Userr", usersArrayList.get(i));
startActivity(intent);}
}
});