我对Android编程非常陌生,我试图将Parse数据库连接到我的RecyclerView。当我打开这个片段时,它会关闭整个应用程序。它之前工作时我的事件对象只有一个参数,我查询了数据库的一个部分,但我不得不将其更改为一个单独的对象,因为我需要更多的数据库部分。我还尝试在查询方法的不同部分中移动RecyclerView但它仍然没有打开,因为它确实在我确定我的问题出在EventFragment类之前。
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import java.util.Collections;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*
*/
public class EventFragment extends android.support.v4.app.Fragment {
TextView text;
private RecyclerView recyclerView;
public static adapter adapt;
public static List<Event> dbObjects = Collections.emptyList();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//Log.d("IN EVENT FRAGMENT", "WE ARE IN!!!!");
// Inflate the layout for this fragment
final View v = inflater.inflate(R.layout.fragment_event, container, false);
ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
query.whereExists("title");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objList, ParseException e) {
//dbObjects = scoreList;
//adapt = new adapter(getActivity(), dbObjects);
if (e == null) {
for (ParseObject obj : objList) {
//Log.d("DEBUG", "The username is:" + dbObjects.size());
Event event = new Event(obj.getString("title"), obj.getString("eventDate"));
dbObjects.add(event);
}
} else {
Log.d("HELLO", "Something went wrong!");
}
}
});
//RecyclerView
adapt = new adapter(getActivity(), dbObjects);
recyclerView = (RecyclerView) v.findViewById(R.id.recycle);
recyclerView.setAdapter(adapt);
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
final LinearLayoutManager llm = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(llm);
return v;
}
}
这是我的适配器类
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
public class adapter extends RecyclerView.Adapter<adapter.MyViewHolder> {
private LayoutInflater inflater;
private Context context;
public static List<Event> data;
public adapter(Context context, List<Event> objects) {
this.context = context;
inflater = LayoutInflater.from(context);
this.data = objects;
}
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.custom, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
public void onBindViewHolder(MyViewHolder holder, int position) {
Event current = data.get(position);
holder.title.setText(current.getTitle());
holder.date.setText(current.getDate());
}
public int getItemCount() {
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;
TextView date;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title);
date = (TextView) itemView.findViewById(R.id.date);
}
}
}
我的事件对象
public class Event {
public String title;
public String date;
public Event(String tit, String dat) {
title = tit;
date = dat;
}
public String getTitle() {
return title;
}
public String getDate() {
return date;
}
}
logcat的
09-10 09:10:02.116 6767-6767/? I/art﹕ Not late-enabling -Xcheck:jni (already on)
09-10 09:10:03.231 6767-6779/suyash.sjsu_cs_club I/art﹕ Background sticky concurrent mark sweep GC freed 1793(132KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 35MB/35MB, paused 3.498ms total 116.782ms
09-10 09:10:03.241 6767-6779/suyash.sjsu_cs_club W/art﹕ Suspending all threads took: 9.643ms
09-10 09:10:03.452 6767-6779/suyash.sjsu_cs_club W/art﹕ Suspending all threads took: 10.751ms
09-10 09:10:03.922 6767-6790/suyash.sjsu_cs_club D/OpenGLRenderer﹕ Render dirty regions requested: true
09-10 09:10:03.928 6767-6767/suyash.sjsu_cs_club D/﹕ HostConnection::get() New Host Connection established 0xae0b8e70, tid 6767
09-10 09:10:03.953 6767-6767/suyash.sjsu_cs_club D/Atlas﹕ Validating map...
09-10 09:10:04.041 6767-6790/suyash.sjsu_cs_club D/﹕ HostConnection::get() New Host Connection established 0xa6c91360, tid 6790
09-10 09:10:04.069 6767-6790/suyash.sjsu_cs_club I/OpenGLRenderer﹕ Initialized EGL, version 1.4
09-10 09:10:04.188 6767-6790/suyash.sjsu_cs_club D/OpenGLRenderer﹕ Enabling debug mode 0
09-10 09:10:04.205 6767-6790/suyash.sjsu_cs_club W/EGL_emulation﹕ eglSurfaceAttrib not implemented
09-10 09:10:04.205 6767-6790/suyash.sjsu_cs_club W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa6cab0c0, error=EGL_SUCCESS
09-10 09:10:21.407 6767-6767/suyash.sjsu_cs_club D/AndroidRuntime﹕ Shutting down VM
09-10 09:10:21.408 6767-6767/suyash.sjsu_cs_club E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: suyash.sjsu_cs_club, PID: 6767
java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:404)
at java.util.AbstractList.add(AbstractList.java:425)
at suyash.sjsu_cs_club.EventFragment$1.done(EventFragment.java:66)
at suyash.sjsu_cs_club.EventFragment$1.done(EventFragment.java:54)
at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
09-10 09:11:52.915 6767-6774/suyash.sjsu_cs_club W/art﹕ Suspending all threads took: 5.668ms
这也是一个单独的问题,可能需要第二篇文章,但我如何为RecyclerView创建一个onItemClickListener,其内容会在数据库中定期更改?