无法转换为java.lang.String chatMessages=newarraylist(); listView=findViewById(R.id.list\u of_消息); 消息(主题标识); listView.setTranscriptMode(AbsListView.TRANSCRIPT\u MODE\u ALWAYS\u SCROLL); setAdapter(chatAdapter); buttonSend=findViewById(R.id.send); fileSend=findviewbyd(R.id.file\u send); chatText=(EditText)findViewById(R.id.mychat); //删除_btn=findviewbyd(R.id.); setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){ //视图选择; @凌驾 公共布尔长单击(AdapterView父视图、最终视图、最终整型位置、长id){ 如果(视图!=null){ 视图.setBackgroundColor(0xFFB2DFDB); } 字符串值=(字符串)listView.getItemAtPosition(位置); msgid=chatMessages.get(position.getMessageID(); message=chatMessages.get(position.getMessageText(); userid1=chatMessages.get(position.getUserId(); username=chatMessages.get(position.getMessageUser(); replyuser=chatMessages.get(position.getReply_user(); if(sno.equals(userid1)){ 视图.setBackgroundColor(0xFFB2DFDB); //Toast.makeText(getApplicationContext(),“Hello”+userid1+msgid,Toast.LENGTH_SHORT).show(); //ImageView编辑=(ImageView)findViewById(R.id.delete_图标); //edit.setVisibility(View.VISIBLE); // ); topic.setText(getString(R.string.edit)); myToolbar.setLogo(R.drawable.edit); //视图.setBackgroundColor(颜色.白色); topic.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ 聊天信息。删除(位置); 视图.setBackgroundColor(颜色.透明); userid1=null; notifyDataSetChanged(); chatText.setText(消息); } }); myToolbar.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ 聊天信息。删除(位置); userid1=null; notifyDataSetChanged(); chatText.setText(消息); } }); }否则{ 视图.setBackgroundColor(0xFFB2DFDB); //Toast.makeText(getApplicationContext(),“Hello”+userid1+msgid,Toast.LENGTH_SHORT).show(); topic.setText(getString(R.string.reply)); myToolbar.setLogo(R.drawable.replay); //视图.setBackgroundColor(颜色.白色); //reply=(ImageView)findViewById(R.id.reply_图标); //reply.setVisibility(View.VISIBLE); topic.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout=(LinearLayout)findViewById(R.id.reply_布局); replylayout.setVisibility(View.VISIBLE); TextView replay\u name=(TextView)findViewById(R.id.reply\u用户); TextView replay_text=(TextView)findViewById(R.id.reply_text); ImageButton Cancel=(ImageButton)findViewById(R.id.cancell_btn); replay_name.setText(用户名); replay_text.setText(消息); cancell.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout.removeAllViews(); startActivity(getIntent()); } }); } }); myToolbar.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout=(LinearLayout)findViewById(R.id.reply_布局); replylayout.setVisibility(View.VISIBLE); TextView replay\u name=(TextView)findViewById(R.id.reply\u用户); TextView replay_text=(TextView)findViewById(R.id.reply_text); ImageButton Cancel=(ImageButton)findViewById(R.id.cancell_btn); replay_name.setText(用户名); replay_text.setText(消息); cancell.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout.removeAllViews(); startActivity(getIntent()); } }); } }); } 返回true; } });
我想在长按列表项时在列表视图上实现setOnItemLongClickListener,然后执行其他活动,如删除和编辑功能。当按下长按时,则无法将give error转换为java.lang.String无法转换为java.lang.String chatMessages=newarraylist(); listView=findViewById(R.id.list\u of_消息); 消息(主题标识); listView.setTranscriptMode(AbsListView.TRANSCRIPT\u MODE\u ALWAYS\u SCROLL); setAdapter(chatAdapter); buttonSend=findViewById(R.id.send); fileSend=findviewbyd(R.id.file\u send); chatText=(EditText)findViewById(R.id.mychat); //删除_btn=findviewbyd(R.id.); setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){ //视图选择; @凌驾 公共布尔长单击(AdapterView父视图、最终视图、最终整型位置、长id){ 如果(视图!=null){ 视图.setBackgroundColor(0xFFB2DFDB); } 字符串值=(字符串)listView.getItemAtPosition(位置); msgid=chatMessages.get(position.getMessageID(); message=chatMessages.get(position.getMessageText(); userid1=chatMessages.get(position.getUserId(); username=chatMessages.get(position.getMessageUser(); replyuser=chatMessages.get(position.getReply_user(); if(sno.equals(userid1)){ 视图.setBackgroundColor(0xFFB2DFDB); //Toast.makeText(getApplicationContext(),“Hello”+userid1+msgid,Toast.LENGTH_SHORT).show(); //ImageView编辑=(ImageView)findViewById(R.id.delete_图标); //edit.setVisibility(View.VISIBLE); // ); topic.setText(getString(R.string.edit)); myToolbar.setLogo(R.drawable.edit); //视图.setBackgroundColor(颜色.白色); topic.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ 聊天信息。删除(位置); 视图.setBackgroundColor(颜色.透明); userid1=null; notifyDataSetChanged(); chatText.setText(消息); } }); myToolbar.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ 聊天信息。删除(位置); userid1=null; notifyDataSetChanged(); chatText.setText(消息); } }); }否则{ 视图.setBackgroundColor(0xFFB2DFDB); //Toast.makeText(getApplicationContext(),“Hello”+userid1+msgid,Toast.LENGTH_SHORT).show(); topic.setText(getString(R.string.reply)); myToolbar.setLogo(R.drawable.replay); //视图.setBackgroundColor(颜色.白色); //reply=(ImageView)findViewById(R.id.reply_图标); //reply.setVisibility(View.VISIBLE); topic.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout=(LinearLayout)findViewById(R.id.reply_布局); replylayout.setVisibility(View.VISIBLE); TextView replay\u name=(TextView)findViewById(R.id.reply\u用户); TextView replay_text=(TextView)findViewById(R.id.reply_text); ImageButton Cancel=(ImageButton)findViewById(R.id.cancell_btn); replay_name.setText(用户名); replay_text.setText(消息); cancell.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout.removeAllViews(); startActivity(getIntent()); } }); } }); myToolbar.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout=(LinearLayout)findViewById(R.id.reply_布局); replylayout.setVisibility(View.VISIBLE); TextView replay\u name=(TextView)findViewById(R.id.reply\u用户); TextView replay_text=(TextView)findViewById(R.id.reply_text); ImageButton Cancel=(ImageButton)findViewById(R.id.cancell_btn); replay_name.setText(用户名); replay_text.setText(消息); cancell.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ replylayout.removeAllViews(); startActivity(getIntent()); } }); } }); } 返回true; } });,java,android,Java,Android,我想在长按列表项时在列表视图上实现setOnItemLongClickListener,然后执行其他活动,如删除和编辑功能。当按下长按时,则无法将give error转换为java.lang.String chatMessages = new ArrayList<>(); listView = findViewById(R.id.list_of_messages); Message(topic_id); listView.setTranscriptMode
chatMessages = new ArrayList<>();
listView = findViewById(R.id.list_of_messages);
Message(topic_id);
listView.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
listView.setAdapter(chatAdapter);
buttonSend = findViewById(R.id.send);
fileSend = findViewById(R.id.file_send);
chatText = (EditText) findViewById(R.id.mychat);
// delete_btn = findViewById(R.id.);
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
// View select;
@Override
public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) {
if ( view != null){
view.setBackgroundColor(0xFFB2DFDB);
}
String value = (String) listView.getItemAtPosition(position);
msgid = chatMessages.get(position).getMessageID();
message = chatMessages.get(position).getMessageText();
userid1 = chatMessages.get(position).getUserId();
username = chatMessages.get(position).getMessageUser();
replyuser = chatMessages.get(position).getReply_user();
if (sno.equals(userid1)) {
view.setBackgroundColor(0xFFB2DFDB);
// Toast.makeText(getApplicationContext(),"Hello"+userid1+msgid,Toast.LENGTH_SHORT).show();
// ImageView edit = (ImageView) findViewById(R.id.delete_icon);
// edit.setVisibility(View.VISIBLE);
// );
topic.setText(getString(R.string.edit));
myToolbar.setLogo(R.drawable.edit);
// view.setBackgroundColor(Color.WHITE);
topic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chatMessages.remove(position);
view.setBackgroundColor(Color.TRANSPARENT);
userid1 = null;
chatAdapter.notifyDataSetChanged();
chatText.setText(message);
}
});
myToolbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chatMessages.remove(position);
userid1 = null;
chatAdapter.notifyDataSetChanged();
chatText.setText(message);
}
});
} else {
view.setBackgroundColor(0xFFB2DFDB);
// Toast.makeText(getApplicationContext(),"Hello"+userid1+msgid,Toast.LENGTH_SHORT).show();
topic.setText(getString(R.string.reply));
myToolbar.setLogo(R.drawable.replay);
// view.setBackgroundColor(Color.WHITE);
// reply = (ImageView) findViewById(R.id.reply_icon);
// reply.setVisibility(View.VISIBLE);
topic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
replylayout = (LinearLayout) findViewById(R.id.reply_layout);
replylayout.setVisibility(View.VISIBLE);
TextView replay_name = (TextView) findViewById(R.id.reply_user);
TextView replay_text = (TextView) findViewById(R.id.reply_text);
ImageButton cancell = (ImageButton) findViewById(R.id.cancell_btn);
replay_name.setText(username);
replay_text.setText(message);
cancell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
replylayout.removeAllViews();
startActivity(getIntent());
}
});
}
});
myToolbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
replylayout = (LinearLayout) findViewById(R.id.reply_layout);
replylayout.setVisibility(View.VISIBLE);
TextView replay_name = (TextView) findViewById(R.id.reply_user);
TextView replay_text = (TextView) findViewById(R.id.reply_text);
ImageButton cancell = (ImageButton) findViewById(R.id.cancell_btn);
replay_name.setText(username);
replay_text.setText(message);
cancell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
replylayout.removeAllViews();
startActivity(getIntent());
}
});
}
});
}
return true;
}
});
用这个
String value = (String) listView.getItemAtPosition(position);
主要问题在这方面
String value = String.valueOf(listView.getItemAtPosition(position));
我肯定不能确定listview是否像后面调用的代码那样充满了字符串项
String value = (String) listView.getItemAtPosition(position);
所以你的价值应该是
chatMessages.get(position).getMessageID()
在适配器中,您需要更改这些方法(如果尚未更改):
视图不能转换为字符串。我认为上面的代码应该是(假设列表视图中的项目内容是文本):
在这里发布你的聊天信息课程。另外请注意:你希望人们花时间帮助你解决问题。所以你至少应该愿意花点时间
ChatMessage value = (ChatMessage) listView.getItemAtPosition(position);
@Override
public Object getItem(int i) {
return items.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
String value = (String) listView.getItemAtPosition(position);
String value = listView.getItemAtPosition(position).toString();