我只想选择一个列表项,但它选择了一个以上,当长按一次时,滚动时选择多个列表项,当祝酒消息从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/