Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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 Android Parse.com使用自定义适配器问题填充listview_Java_Android_Listview_Nullpointerexception_Parse Platform - Fatal编程技术网

Java Android Parse.com使用自定义适配器问题填充listview

Java Android Parse.com使用自定义适配器问题填充listview,java,android,listview,nullpointerexception,parse-platform,Java,Android,Listview,Nullpointerexception,Parse Platform,从parse.com检索数据时,我收到NullPointerException。我已经追踪了整个程序,我确实收到了数据。我将复制适配器和done方法的源代码 FATAL EXCEPTION: main java.lang.NullPointerEXception at adapter.GroupChatAdapter.add(GroupChatFragment.java.79) 这是我的自定义添加 public class GroupChatAdapter extends ArrayA

从parse.com检索数据时,我收到NullPointerException。我已经追踪了整个程序,我确实收到了数据。我将复制适配器和done方法的源代码

FATAL EXCEPTION: main java.lang.NullPointerEXception at adapter.GroupChatAdapter.add(GroupChatFragment.java.79)
这是我的自定义添加

    public class GroupChatAdapter extends ArrayAdapter<GroupChat>{
private List<GroupChat> chat;
private Group subscrib;
private ListView listView;

public GroupChatAdapter(Context context,
        int textViewResourceId) {
    super(context,textViewResourceId);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent){
    View v = convertView;
    if(v == null){
        LayoutInflater vi = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.list_row_group_chat, null);
    }
    GroupChat cht = chat.get(position);
    if(cht != null){
        TextView userNameText =(TextView) v.findViewById(R.id.userName);
        TextView userPostText = (TextView) v.findViewById(R.id.userPost);
        if(userNameText != null){
            userNameText.setText(cht.userName);
        }
        if(userPostText!=null){
            userPostText.setText(cht.userComment);
        }
    }
    return v;
}
public void add(GroupChat chat){
    this.chat.add(chat);
}

    }
公共类GroupChatAdapter扩展了ArrayAdapter{
私人列表聊天;
私人团体认购;
私有列表视图列表视图;
公共GroupChatAdapter(上下文,
int textViewResourceId){
super(上下文,textViewResourceId);
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)this.getContext().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.布局.列表\行\组\聊天,空);
}
GroupChat cht=chat.get(位置);
如果(cht!=null){
TextView用户名text=(TextView)v.findviewbyd(R.id.userName);
TextView userPostText=(TextView)v.findviewbyd(R.id.userPost);
if(userNameText!=null){
userNameText.setText(cht.userName);
}
如果(userPostText!=null){
userPostText.setText(cht.userComment);
}
}
返回v;
}
公共无效添加(GroupChat){
this.chat.add(chat);
}
}
这里是发生异常的地方

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_group_chat, container, false);
    mListView = (ListView) rootView.findViewById(android.R.id.list);

    return rootView;

}
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Bundle args = getArguments();
    if (args  != null && args.containsKey("groupName")){
        groupNamePassed = args.getString("groupName");
    }

    chatsList = new ArrayList<GroupChat>();
    mAdapter = new GroupChatAdapter(getActivity(),android.R.id.list);
    ParseQuery<ParseObject> query = ParseQuery.getQuery("comments");
    query.setLimit(1000);
    query.whereEqualTo("groupName",groupNamePassed);
    query.orderByAscending("createdAt");
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            // TODO Auto-generated method stub
            for (ParseObject groups : objects) {
                chatchat = new GroupChat(groups.getString("user").toString(),groups.getString("groupComments").toString());
                mAdapter.add(chatchat);
            }
        }
    });

}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub

    super.onActivityCreated(savedInstanceState);
    mListView.setAdapter(mAdapter);
    mAdapter.notifyDataSetChanged();
    messageToSend = (TextView)getView().findViewById(R.id.sendMessageText);
    Button submitPost = (Button) getView().findViewById(R.id.sendMessageButton);
    submitPost.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Bundle args = getArguments();
            if (args  != null && args.containsKey("groupName")){
                groupNamePassed = args.getString("groupName");
            }
            String message = messageToSend.getText().toString().trim();
            ParseObject commentParse = new ParseObject("comments");
            commentParse.put("groupName",groupNamePassed);
            ParseUser user = ParseUser.getCurrentUser();
            commentParse.put("user",user.get("username").toString());
            commentParse.put("groupComments",message);
            commentParse.saveInBackground();

            mAdapter.add(new GroupChat(user.get("username").toString(),message));
            mAdapter.notifyDataSetChanged();
        }
    });


}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u group\u chat,container,false);
mListView=(ListView)rootView.findviewbyd(android.R.id.list);
返回rootView;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
Bundle args=getArguments();
if(args!=null&&args.containsKey(“groupName”)){
groupNamePassed=args.getString(“groupName”);
}
chatsList=newarraylist();
mAdapter=newGroupChatAdapter(getActivity(),android.R.id.list);
ParseQuery=ParseQuery.getQuery(“注释”);
查询设置限制(1000);
查询.whereEqualTo(“groupName”,groupNamePassed);
query.orderByAscending(“createdAt”);
findInBackground(新的FindCallback(){
@凌驾
公共void done(列出对象,parsee异常){
//TODO自动生成的方法存根
用于(解析对象组:对象){
chatchat=newgroupchat(groups.getString(“用户”).toString(),groups.getString(“groupComments”).toString());
mAdapter.add(聊天室);
}
}
});
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onActivityCreated(savedInstanceState);
mListView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
messageToSend=(TextView)getView().findViewById(R.id.sendMessageText);
Button submitPost=(Button)getView().findViewById(R.id.sendMessageButton);
submitPost.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Bundle args=getArguments();
if(args!=null&&args.containsKey(“groupName”)){
groupNamePassed=args.getString(“groupName”);
}
String message=messageToSend.getText().toString().trim();
ParseObject commentParse=新的ParseObject(“注释”);
commentParse.put(“groupName”,groupNamePassed);
ParseUser=ParseUser.getCurrentUser();
commentParse.put(“user”,user.get(“username”).toString());
commentParse.put(“groupComments”,message);
commentParse.saveInBackground();
添加(新的GroupChat(user.get(“username”).toString(),message));
mAdapter.notifyDataSetChanged();
}
});
}

mAdapter.add(聊天室)导致我的应用程序崩溃。我看不出我设置得不对。任何帮助都将不胜感激……

您在视图分配中犯了错误,因此您必须遵循此自定义适配器,它将为您提供最好的帮助

public class CustomAdapter extends ArrayAdapter<Sample> {

public ArrayList<Sample> mlist;
public Context context;
public LayoutInflater inflater;

public CustomAdapter(Context context, int resource, ArrayList<Sample> mlist) {
super(context, resource);
this.mlist = mlist;
this.context = context;
inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getPosition(Sample item) {
return super.getPosition(item);
}

@Override
public Sample getItem(int position) {
return mlist.get(position);
}

@Override
public int getCount() {
return mlist.size();
}

@Override
public long getItemId(int position) {
return super.getItemId(position);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.listitem, null);//Replace your layout....
TextView text1 = (TextView) convertView.findViewById(R.id.item1);
TextView text2 = (TextView) convertView.findViewById(R.id.item2);
text1.setText(mlist.get(position).getListitem1());
text2.setText(mlist.get(position).getListitem2());
text2.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // you just put your Logic here And use this custom adapter to
        // load your Data By using this particular custom adapter to
        // your listview
                        //Change your imageview here

    }
});
return convertView;
}

}
公共类CustomAdapter扩展了ArrayAdapter{
公共阵列列表;
公共语境;
公共场所;充气机;
公共CustomAdapter(上下文上下文、int资源、ArrayList mlist){
超级(上下文、资源);
this.mlist=mlist;
this.context=上下文;
充气器=(充气器)上下文
.getSystemService(上下文布局\充气机\服务);
}
@凌驾
公共int getPosition(示例项){
返回super.getPosition(项目);
}
@凌驾
公共示例getItem(int位置){
返回mlist.get(位置);
}
@凌驾
public int getCount(){
返回mlist.size();
}
@凌驾
公共长getItemId(int位置){
返回super.getItemId(位置);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
convertView=inflater.inflate(R.layout.listitem,null);//替换布局。。。。
TextView text1=(TextView)convertView.findViewById(R.id.item1);
TextView text2=(TextView)convertView.findViewById(R.id.item2);
text1.setText(mlist.get(position.getListitem1());
text2.setText(mlist.get(position.getListitem2());
text2.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//您只需将逻辑放在这里,并使用此自定义适配器
//通过使用此特定的自定义适配器加载数据
//您的列表视图
//在此处更改图像视图
}
});
返回视图;
}
}
您使用的是自己的“列表聊天”,而不是ArrayAdapter提供的数组。在这种情况下,您需要使用对象初始化chat引用(Java不会自动这样做)。如果不这样做,“chat”将指向null/junk实例,而执行chat.add()将抛出NullPointerException

在GroupChatAdapter构造中