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