我只想选择一个列表项,但它选择了一个以上,当长按一次时,滚动时选择多个列表项,当祝酒消息从listView中给出随机值时,我想选择一个列表项值。

if (getItemViewType(position) == 0) {

            convertView = inflater.inflate(R.layout.mymessage, null, true);
            final View finalConvertView = convertView;
            convertView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    finalConvertView.setBackgroundColor(0xFFB2DFDB);
                    final String message2 = chatMessages.get(position).getMessageText();
                    final String msgid2 = chatMessages.get(position).getMessageID();
                    holder.delete.setVisibility(View.VISIBLE);
                    holder.delete.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            chatMessages.remove(position);
                            finalConvertView.setBackgroundColor(Color.TRANSPARENT);
                            holder.delete.setVisibility(View.GONE);
                            notifyDataSetChanged();
                            ((ChatActivity)context).Edit(message2, msgid2);
                        }
                    });
                    return true;
                }
            });

        }else {
            convertView = inflater.inflate(R.layout.message, null, true);
            final View finalConvertView = convertView;
            ChatMessage chatMessage = getItem(position);


            convertView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {


                    final String replyuser = chatMessages.get(position).getReply_user();
                    final String message2 = chatMessages.get(position).getMessageText();
                    final String username = chatMessages.get(position).getMessageUser();
                    final String userid1 = chatMessages.get(position).getUserId();
                    final String msgid = chatMessages.get(position).getMessageID();
                    finalConvertView.setBackgroundColor(0xFFB2DFDB);
                    holder.reply.setVisibility(View.VISIBLE);
                    holder.reply.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Intent intent3 = new Intent(context, ChatActivity.class);
                            intent3.putExtra("user_id", userid1);
                            intent3.putExtra("message_id", msgid);
                            intent3.putExtra("replied_user_name", replyuser);
                          //  Toast.makeText(context,"Hello"+userid1+msgid,Toast.LENGTH_SHORT).show();
                            ((ChatActivity)context).Reply(username, message2);

                        }
                    });
                    return true;
                }
            });

        }

最佳答案

Event Listeners


onLongClick()-这将返回一个布尔值以指示您是否拥有
消耗了该事件,因此不应继续进行。那是,
返回true表示您已经处理了该事件,应该
停在这里;如果尚未处理和/或事件,则返回false
应该继续使用任何其他单击式侦听器。


对于ListView组件,您可能正在使用OnItemLongClickListener。那里的onItemLongClick()使用类似的布尔返回值来指示是否消耗了该事件。

Return true :表示事件已处理,无需触发其他事件(例如onClick)

Return false:表示未处理事件。可以引发其他事件,例如.NET WPF中的气泡事件。

@Override
public boolean onItemLongClick(View view) {
    //your code
    return true; // or false
}


OnItemLongClick表示已激活LongClick,并且会在常规点击时取消触发。 (例如LongClick的包装器)。

关于java - 当在适配器类中选择onLongClickListener时,不提供所选列表项的值,也不选择多个列表项吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56537861/

10-09 16:01
查看更多