Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将项目作为listitem添加到listview_Android - Fatal编程技术网

Android 将项目作为listitem添加到listview

Android 将项目作为listitem添加到listview,android,Android,您好,有人可以帮助我吗?我正在尝试创建一个消息类型的应用程序,当单击“addButton”时,我希望它将此作为一个项目添加到我现有的listview中-我已经研究了如何执行此操作,并尝试将其应用到我的代码中,但未成功。我的问题是 添加(editText.getText().toString()) 我得到这个错误 add in ArrayList cannot be applied to (java.lang.String) 这是我的代码,任何帮助都将不胜感激!谢谢大家! public

您好,有人可以帮助我吗?我正在尝试创建一个消息类型的应用程序,当单击“addButton”时,我希望它将此作为一个项目添加到我现有的listview中-我已经研究了如何执行此操作,并尝试将其应用到我的代码中,但未成功。我的问题是

添加(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();
            }
        });

}
公共类会话视图扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u conversation\u视图);
Intent=getIntent();
String thread=intent.getStringExtra(“threadId”);
threadId=Integer.parseInt(线程);
editText=(editText)findViewById(R.id.write\u a\u message);
addButton=(按钮)findViewById(R.id.send_message_按钮);
最终ListView convalistView=(ListView)this.findViewById(R.id.conversationListView);
final ArrayList convalitems=this.GetItems(threadId);
最终转换适配器convaladapter=新转换适配器
(此,R.layout.conversation\u list\u项,R.layout.conversation项);
setAdapter(ConvalAdapter);
addButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
添加(editText.getText().toString());
convaladapter.notifyDataSetChanged();
}
});
ConvalistView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(ConversationView.this,“单击”,Toast.LENGTH\u LONG)
.show();
}
});
}
正如在一篇

错误告诉您不能将类型为
String
的项添加到
ArrayList
中,因为列表是使用此处的类型
ConversationItem
实例化的

final ArrayList<ConversationItem> convoItems = this.GetItems(threadId);
在您的
ConversationItem
中,您需要传递创建该
对象所需的任何信息,并将其添加到列表中。我看不到该类,因此我无法确定如何执行该操作,但您应该能够了解如何创建
ConversationItem
对象

这就像您在
GetItems()
中使用

convoItems.add(editText.getText().toString());
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."));

您需要通过调用
adapter.notifyDataSetChanged()
来更新适配器。您好,很抱歉我这样做了-我刚刚发布了我的代码可能问题在于您有ConvorItems,这是ConversationItem的ArrayList,并且您正在尝试添加字符串类型(editText.getText().toString()),否?我得到的错误是加载项ArrayList无法应用于(java.lang.String)是的,我认为这可能是正确的,但我不确定如何修复此问题以适用于我的应用程序我想创建消息部分(Lorem ipsum text)使用我通过edittext字段传递的任何内容?是的,因此您仍然需要创建一个
ConversationItem
的实例,并将该文本作为该对象的消息
param
的参数传递。感谢您的帮助,我现在已经更好地理解了这一点。