将数据添加到列表Dialog OnItemLongClick Listener

时间:2014-04-20 16:31:32

标签: android onitemlongclicklistener

在@raja的帮助下,我发现我需要将数据更新到列表中。推荐是更改Dialog文件的行:

package com.example.classorganizer;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

class EditListItemDialog extends Dialog implements View.OnClickListener {

private View editText;

public EditListItemDialog(Context context) {
    super(context);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edit_text_dialog);//here is your xml with EditText and 'Ok' and 'Cancel' buttons
    View btnOk = findViewById(R.id.button_ok);
    editText = findViewById(R.id.edit_text);
    btnOk.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    fragment_monday.add(((TextView) editText).getText().toString());//here is your updated(or not updated) text
    dismiss();
}
}

正是在onClick方法中将fragment_monday.add添加到该行。 不幸的是,当我添加fragment_monday时,错误无法解决或者不是一个字段弹出。

我无法使用对话框文件更新列表中的数据,我相信我无法正确调用列表。 如有必要,我可以发布其他代码。任何帮助将不胜感激。

这是应用程序在按下对话框文件中的确认按钮时崩溃的最新logcat:

04-20 19:18:06.049: E/AndroidRuntime(1468): FATAL EXCEPTION: main
04-20 19:18:06.049: E/AndroidRuntime(1468): java.lang.NullPointerException
04-20 19:18:06.049: E/AndroidRuntime(1468):     at         com.example.classorganizer.EditListItemDialog.onClick(EditListItemDialog.java:37)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at     android.view.View.performClick(View.java:2485)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at android.view.View$PerformClick.run(View.java:9080)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at android.os.Handler.handleCallback(Handler.java:587)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at android.os.Looper.loop(Looper.java:130)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at android.app.ActivityThread.main(ActivityThread.java:3687)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at java.lang.reflect.Method.invokeNative(Native Method)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at java.lang.reflect.Method.invoke(Method.java:507)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
04-20 19:18:06.049: E/AndroidRuntime(1468):     at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

问题是你的Dialog不知道fragment_monday

例如,您可以通过将列表fragment_monday作为参数传递给构造函数并声明字段fragment_monday来解决此问题。假设它是一个字符串列表:

private List<String> fragment_monday;

public EditListItemDialog(Context context, List<String> fragment_monday) {
    super(context);
    this.fragment_monday = fragment_monday;
}

旁注:我会重命名“fragment_monday”,因为它违反了命名约定