gpt4 book ai didi

java - 当在适配器类中选择 onLongClickListener 时,未给出所选列表项值并且还选择多个列表项?

转载 作者:行者123 更新时间:2023-12-02 04:38:17 25 4
gpt4 key购买 nike

我只想选择列表项一次,但它选择了多个列表项,当单击一次长按时,它在滚动时选择多个列表项,当 toast 消息从 listView 中给出随机值时,我想给出选定的列表元素值(value)。

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() - This returns a boolean to indicate whether you have consumed the event and it should not be carried further. That is, return true to indicate that you have handled the event and it should stop here; return false if you have not handled it and/or the event should continue to any other on-click listeners.

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

返回 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com