Java notifySetDataChanged()在列表视图的自定义适配器中引发NullPointer异常
我制作了一个自定义数组适配器,它可以更改列表布局中两个文本视图的字符串。 问题是,当我调用notifySetDataChanged函数时,它抛出一个空指针异常。即使参考了各种在线论坛,我也无法确定这个错误的来源 这是我的密码: MessageAdapetr.javaJava 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
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);