Java Android Parse.com使用自定义适配器问题填充listview
从parse.com检索数据时,我收到NullPointerException。我已经追踪了整个程序,我确实收到了数据。我将复制适配器和done方法的源代码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
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构造中