将项目添加到listview作为listitem

时间:2015-02-18 21:24:28

标签: android

嗨,有人可以帮助我,我正在尝试创建一个消息类型的应用程序,当点击'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();
            }
        });

}

1 个答案:

答案 0 :(得分:0)

LucasT ... {/ p>中指出comment

错误告诉您无法将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."));