Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
Java notifySetDataChanged()在列表视图的自定义适配器中引发NullPointer异常_Java_Android_Nullpointerexception_Custom Adapter_Notifydatasetchanged - Fatal编程技术网

Java notifySetDataChanged()在列表视图的自定义适配器中引发NullPointer异常

Java notifySetDataChanged()在列表视图的自定义适配器中引发NullPointer异常,java,android,nullpointerexception,custom-adapter,notifydatasetchanged,Java,Android,Nullpointerexception,Custom Adapter,Notifydatasetchanged,我制作了一个自定义数组适配器,它可以更改列表布局中两个文本视图的字符串。 问题是,当我调用notifySetDataChanged函数时,它抛出一个空指针异常。即使参考了各种在线论坛,我也无法确定这个错误的来源 这是我的密码: MessageAdapetr.java import java.util.ArrayList; import java.util.List; import android.annotation.SuppressLint; import android.content.Co

我制作了一个自定义数组适配器,它可以更改列表布局中两个文本视图的字符串。 问题是,当我调用notifySetDataChanged函数时,它抛出一个空指针异常。即使参考了各种在线论坛,我也无法确定这个错误的来源

这是我的密码:

MessageAdapetr.java

import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

@SuppressLint("ViewHolder") public class MessageAdapter extends ArrayAdapter<TextMessage> {


 private Context context;
 public List<TextMessage> message;

    public MessageAdapter(Context context, List<TextMessage> message)
    {
        super(context, R.layout.message_layout);
        this.context = context;
        this.message = new ArrayList<TextMessage>();
        this.message = message;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.message_layout, parent, false);

        TextView your_first_text_view = (TextView) rowView.findViewById(R.id.textView1);
        TextView your_second_text_view = (TextView) rowView.findViewById(R.id.textView2);

        your_first_text_view.setText(message.get(position).getContent());
        your_second_text_view.setText(message.get(position).getSender());

        return rowView;
    }
}
请随时询问更多信息。必修的。 提前感谢。

更改以下行:

public MessageAdapter(Context context, List<TextMessage> message)

super(context, R.layout.message_layout);

MessageAdapter my_adapter = new MessageAdapter(this, posts);

您尚未向适配器超级构造函数传递任何对象,因此在调用notifyDataSetChanged时,他不会更改任何内容,因为他没有要应用的列表项

在此之后,请确保您正在更改传递给适配器的消息对象,您必须更改一个对象引用,而不是创建另一个对象引用,然后更改该对象引用


希望它能帮助你

EditTextMessage.java第280行是什么?@Tom第280行:MessageAdapter getListAdapter.notifyDataSetChanged;当这行返回null时。您应该检查getListAdapter方法。JavaDoc说这个方法返回ListAdapter。是否分配了一个?尝试将my_adapter设置为类变量,并调用显式my_adapter.notifyDataSetChanged;不,这是ListActivity的一种方法。如果需要,应首先设置ListAdapterMy_适配器。有关ListActivity09-25 13:37:08.782:E/AndroidRuntime31100:FATAL EXCEPTION:main 09-25 13:37:08.782:E/AndroidRuntime31100:java.lang.NullPointerException 09-25 13:37:08.782:E/AndroidRuntime31100:at ish.message.MessageAdapter.getViewMessageAdapter.java:83行是:TextView your\u first\u text\u view=TextViewrow.findviewbydr.id.textView1;尝试清理并构建,确保在R.layout.message\u布局中有R.id.textView1将构造函数更改为public messageadapter上下文,int资源,List message再次查看我的答案。
09-25 00:54:01.900: E/AndroidRuntime(12896): FATAL EXCEPTION: main
09-25 00:54:01.900: E/AndroidRuntime(12896): java.lang.NullPointerException
09-25 00:54:01.900: E/AndroidRuntime(12896):    at ish.message.EditTextMessage$5.done(EditTextMessage.java:280)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at com.parse.FindCallback.internalDone(FindCallback.java:45)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at com.parse.FindCallback.internalDone(FindCallback.java:31)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at com.parse.Parse$5$1.run(Parse.java:891)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at android.os.Handler.handleCallback(Handler.java:615)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at android.os.Looper.loop(Looper.java:137)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at android.app.ActivityThread.main(ActivityThread.java:4960)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at java.lang.reflect.Method.invokeNative(Native Method)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at java.lang.reflect.Method.invoke(Method.java:511)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
09-25 00:54:01.900: E/AndroidRuntime(12896):    at dalvik.system.NativeStart.main(Native Method)
public MessageAdapter(Context context, List<TextMessage> message)

super(context, R.layout.message_layout);

MessageAdapter my_adapter = new MessageAdapter(this, posts);
public MessageAdapter(Context context, int resource, List<TextMessage> message)

super(context, resource ,message);

MessageAdapter my_adapter = new MessageAdapter(this, R.layout.message_layout , posts);