java - RecyclerView 没有出现在我的应用程序中

标签 java android

我找不到我的代码有什么问题。当我运行我的应用程序时,RecyclerView 没有显示。

提前致谢。

主要 Activity onCreate 方法:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_appbar);

    toolbar=(Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayShowHomeEnabled(true);

    NavFragment drawerFragment = (NavFragment)
            getSupportFragmentManager().findFragmentById(R.id.nav_frag);
    drawerFragment.setUp(R.id.nav_frag, (DrawerLayout) findViewById(R.id.drawerLayout), toolbar);
    listEvents= new ArrayList<>();



    Parse.enableLocalDatastore(this);
    Parse.initialize(this, "xxxxxxx", "xxxxxxxx");

    //TEST PARSE
    final TextView t =(TextView) findViewById(R.id.textView);
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Test");
    //query.whereEqualTo("playerName", "Dan Stemkoski");
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> eventList, ParseException e) {
            if (e == null) {
                Log.d("Events", "Retrieved " + eventList.size() + " Events");

                for (int i = 0; i < eventList.size(); i++) {
                    Events events = new Events();
                    events.setTitle((String) eventList.get(i).get("teststr"));
                    events.setId(String.valueOf( eventList.get(i).get("id")));
                    listEvents.add(events);
                }
            } else {
                Log.d("score", "Error: " + e.getMessage());
            }
        }
    });


    eventAdapter= new EventAdapter(this);
    eventAdapter.setEventList(listEvents);
    eventsList=(RecyclerView)findViewById(R.id.list_events);
    eventsList.setLayoutManager(new LinearLayoutManager(this));
    eventsList.setAdapter(eventAdapter);


}

RecylerView 的事件适配器:

public class EventAdapter extends RecyclerView.Adapter<EventAdapter.ViewHolderEvents> {
private LayoutInflater layoutInflater;
private ArrayList<Events> listEvents= new ArrayList<>();
public EventAdapter(Context context){
    layoutInflater=LayoutInflater.from(context);
}

public void setEventList(ArrayList<Events> listEvents){
    this.listEvents=listEvents;
    notifyItemRangeChanged(0,listEvents.size());
}

@Override
public ViewHolderEvents onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view=layoutInflater.inflate(R.layout.custom_event_row,viewGroup,false);
    ViewHolderEvents viewHolder =new ViewHolderEvents(view);

    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolderEvents viewHolderEvents, int i) {
    Events currentEvent= listEvents.get(i);
    viewHolderEvents.title.setText(currentEvent.getTitle());
    viewHolderEvents.id.setText(currentEvent.getId());

}

@Override
public int getItemCount() {
    return listEvents.size();
}

static class ViewHolderEvents extends RecyclerView.ViewHolder{
    private TextView title;
    private TextView id;

    public ViewHolderEvents(View itemView) {
        super(itemView);
        title=(TextView)itemView.findViewById(R.id.title);
        id=(TextView)itemView.findViewById(R.id.description);
    }
}

}

已设置为 RecylerView 布局的 XML 布局:activity_main_appbar :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<include
    android:id="@+id/app_bar"
    layout="@layout/app_bar" />
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"

    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v7.widget.RecyclerView
            android:id="@+id/list_events"
            android:layout_height="match_parent"
            android:layout_width="match_parent"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/textView"
            android:layout_gravity="center" />
    </FrameLayout>
    <fragment
        android:id="@+id/nav_frag"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:layout="@layout/fragment_nav"
        android:name="com.squaredbytes.eventlane.NavFragment"
        tools:layout="@layout/fragment_nav" />

</android.support.v4.widget.DrawerLayout>
</LinearLayout>

最佳答案

尝试创建 EventAdapter 并将其设置到 FindCallback 中。

query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> eventList, ParseException e) {
            if (e == null) {
                Log.d("Events", "Retrieved " + eventList.size() + " Events");

            for (int i = 0; i < eventList.size(); i++) {
                Events events = new Events();
                events.setTitle((String) eventList.get(i).get("teststr"));
                events.setId(String.valueOf( eventList.get(i).get("id")));
                listEvents.add(events);
            }

            eventAdapter = new EventAdapter(this);
            eventAdapter.setEventList(listEvents);
            eventsList.setAdapter(eventAdapter);
        } else {
            Log.d("score", "Error: " + e.getMessage());
        }
    }
});

关于java - RecyclerView 没有出现在我的应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31765011/

相关文章:

android - 如何在 pjsip android 应用程序中启用扬声器?

android - 如何为android制作一个包含 native 代码和纯java的库

java - 如何将结构作为参数传递给 java 函数或从 jni 返回 java

java - 在没有 HDFS 的情况下执行 Hadoop 代码

java - 如何使用图像进行碰撞检测?

java - 高 JVM 堆利用率影响 JStack

java - Micronaut:无法使用 junit 测试重定向响应

android - ListView 中每个项目的可扩展 ListView

java - 使用线程实时更新 JTextArea

java - 在类之间发送 token