Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 如何将RecyclerView添加到父活动中的约束布局?_Java_Android_Android Recyclerview - Fatal编程技术网

Java 如何将RecyclerView添加到父活动中的约束布局?

Java 如何将RecyclerView添加到父活动中的约束布局?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有一个基本导航活动。它由一个包含回收器视图的主页活动扩展。我正在尝试将回收器视图添加到基本导航活动中定义的约束布局中。recycler视图的数据来自firebase数据库。但是,我不知道如何将回收器视图添加到约束布局中 recycler视图适用于没有导航栏的活动。因此我想问题不在于检索数据。但是当Homepage活动扩展BaseNav活动时,不会显示任何结果 基本导航活动: public class BaseNavActivity extends AppCompatActivity i

我有一个基本导航活动。它由一个包含回收器视图的主页活动扩展。我正在尝试将回收器视图添加到基本导航活动中定义的约束布局中。recycler视图的数据来自firebase数据库。但是,我不知道如何将回收器视图添加到约束布局中

recycler视图适用于没有导航栏的活动。因此我想问题不在于检索数据。但是当Homepage活动扩展BaseNav活动时,不会显示任何结果

基本导航活动:

public class BaseNavActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

ConstraintLayout constraintLayout;


protected void onCreateDrawer(Bundle savedInstanceState) {
    setContentView(R.layout.activity_base_nav);
    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    constraintLayout = findViewById(R.id.constraint_layout_nav_bar);
}
public class Homepage extends BaseNavActivity {
RecyclerView allEventsRecyclerView;
EventListAdapter eventListAdapter;
View contentView;
LayoutInflater inflater;
ArrayList<EventDetails> returnArrayList;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
ChildEventListener childEventListener;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.onCreateDrawer(savedInstanceState);
    inflater = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    contentView = inflater.inflate(R.layout.activity_homepage, allEventsRecyclerView,false);
    constraintLayout.addView(contentView,0);
    allEventsRecyclerView = findViewById(R.id.homepageRecyclerView);
    allEventsRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    returnArrayList = new ArrayList<>();
    eventListAdapter = new EventListAdapter(this,returnArrayList);
    firebaseDatabase = FirebaseDatabase.getInstance();
    databaseReference = firebaseDatabase.getReference().child("AE").child("someplace");
    childEventListener = new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            returnArrayList.add(dataSnapshot.getValue(EventDetails.class));
            eventListAdapter.notifyDataSetChanged();
            allEventsRecyclerView.setAdapter(eventListAdapter);
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };
    databaseReference.addChildEventListener(childEventListener);

}
}
主页活动:

public class Homepage extends BaseNavActivity {
RecyclerView allEventsRecyclerView;
EventListAdapter eventListAdapter;
View contentView;
LayoutInflater inflater;
ArrayList<EventDetails> returnArrayList;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
ChildEventListener childEventListener;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.onCreateDrawer(savedInstanceState);
    inflater = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    contentView = inflater.inflate(R.layout.activity_homepage, allEventsRecyclerView,false);
    constraintLayout.addView(contentView,0);
    allEventsRecyclerView = findViewById(R.id.homepageRecyclerView);
    allEventsRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    returnArrayList = new ArrayList<>();
    eventListAdapter = new EventListAdapter(this,returnArrayList);
    firebaseDatabase = FirebaseDatabase.getInstance();
    databaseReference = firebaseDatabase.getReference().child("AE").child("someplace");
    childEventListener = new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            returnArrayList.add(dataSnapshot.getValue(EventDetails.class));
            eventListAdapter.notifyDataSetChanged();
            allEventsRecyclerView.setAdapter(eventListAdapter);
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };
    databaseReference.addChildEventListener(childEventListener);

}
}
公共类主页扩展BaseNavActivity{
RecyclerView allEventsRecyclerView;
EventListAdapter事件列表适配器;
视图内容视图;
充气机;
ArrayList返回ArrayList;
FirebaseDatabase FirebaseDatabase;
数据库参考数据库参考;
ChildEventListener ChildEventListener;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
super.onCreateDrawer(savedInstanceState);
充气器=(充气器)此
.getSystemService(上下文布局\充气机\服务);
contentView=充气机。充气(R.layout.activity\u主页,allEventsRecyclerView,false);
constraintLayout.addView(contentView,0);
allEventsRecyclerView=findViewById(R.id.homepageRecyclerView);
allEventsRecyclerView.setLayoutManager(新的LinearLayoutManager(此));
returnArrayList=新建ArrayList();
eventListAdapter=新的eventListAdapter(此为returnArrayList);
firebaseDatabase=firebaseDatabase.getInstance();
databaseReference=firebaseDatabase.getReference().child(“AE”).child(“某处”);
childEventListener=新的childEventListener(){
@凌驾
公共void onChildaded(@NonNull DataSnapshot DataSnapshot,@null字符串s){
添加(dataSnapshot.getValue(EventDetails.class));
eventListAdapter.notifyDataSetChanged();
allEventsRecyclerView.setAdapter(eventListAdapter);
}
@凌驾
public void onChildChanged(@NonNull DataSnapshot DataSnapshot,@null字符串s){
}
@凌驾
公共void onChildRemoved(@NonNull DataSnapshot DataSnapshot){
}
@凌驾
public void onChildMoved(@NonNull DataSnapshot DataSnapshot,@null字符串s){
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
};
databaseReference.addChildEventListener(childEventListener);
}
}
activity_homepage.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Homepage">

<android.support.v7.widget.RecyclerView
    android:id="@+id/homepageRecyclerView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

activity_base_nav.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
    layout="@layout/app_bar_base_nav"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_base_nav"
    app:menu="@menu/activity_base_nav_drawer" />

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

我需要回收器视图与导航栏一起出现在屏幕上。
我怎样才能做到这一点呢?

请为activity\u base\u nav.xml和activity\u homepage.xml添加代码。添加资源文件我可以要求app\u bar\u base\u nav.xml,但我认为最终的解决方案是只添加RecyclerView(你不需要膨胀,只需使用
新的RecyclerView(HomepageActivity.this)
)导航栏的父视图组(我认为是ConstraintLayout)。如果以编程方式添加aView,则始终必须提供类似LayoutParams的内容。请添加activity\u base\u nav.xml和activity\u homepage.xml的代码。添加资源文件我可以请求app\u bar\u base\u nav.xml,但我认为最终的解决方案是只添加RecyclerView(你不需要膨胀,只需使用
新的RecyclerView(HomepageActivity.this)
)导航栏的父视图组(我认为是ConstraintLayout)。如果以编程方式添加aView,则始终必须提供类似LayoutParams的内容。为ConstraintLayout绘制如何执行此操作的草图