嗨,有人可以帮助我,我正在尝试创建一个消息类型的应用程序,当点击'addButton我希望它将其添加到我现有的listview作为项目 - 我已经研究了如何做到这一点,并尝试过将此应用于我的代码失败。我的问题是
convoItems.add(editText.getText()的toString());
我收到此错误
add in ArrayList cannot be applied to (java.lang.String)
这是我的代码任何帮助将不胜感激!谢谢!
public class ConversationView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversation_view);
Intent intent = getIntent();
String thread = intent.getStringExtra("threadId");
threadId = Integer.parseInt(thread);
editText = (EditText) findViewById(R.id.write_a_message);
addButton = (Button) findViewById(R.id.send_message_button);
final ListView convoListView = (ListView) this.findViewById(R.id.conversationListView);
final ArrayList<ConversationItem> convoItems = this.GetItems(threadId);
final ConversionAdapter convoAdapter = new ConversionAdapter
(this, R.layout.conversation_list_item, convoItems);
convoListView.setAdapter(convoAdapter);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
convoItems.add(editText.getText().toString());
convoAdapter.notifyDataSetChanged();
}
});
convoListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(ConversationView.this, "Clicked", Toast.LENGTH_LONG)
.show();
}
});
}
答案 0 :(得分:0)
错误告诉您无法将String
类型的项添加到ArrayList
,因为列表是使用ConversationItem
类型实例化的
final ArrayList<ConversationItem> convoItems = this.GetItems(threadId);
所以你需要添加Object
的那种类型。但是您尝试使用
String
convoItems.add(editText.getText().toString());
在ConversationItem
中,您需要传递创建Object
所需的任何内容,并将 添加到您的列表中。我无法看到该课程,因此我无法确定如何操作,但您应该能够弄清楚如何创建ConversationItem
对象。
就像你在GetItems()
中使用
new ConversationItem(1, 1, "Bob Doe", DateTime.now(), "Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Pellentesque a mauris tincidunt, vehicula elit atr."));
但我不确切地知道你想用它来创建它的数据。这取决于你。
示例强>
convos.add(new ConversationItem(1, 1, "Bob Doe", DateTime.now(), editText.getText().toString(),
consectetur adipiscing elit. Pellentesque a mauris tincidunt, vehicula elit atr."));