回收者视图未显示在片段中

时间:2018-08-27 05:44:41

标签: android android-fragments

我已经转换了以下活动,该活动解析JSON并将其在回收器视图中显示为片段。但该片段显示黑屏。我被困在这里大约七天。我还将该项目添加到了存储库中。 [link] https://github.com/muhammednasimda/actvityfragment

我的活动代码

public class MainActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private ExampleAdapter mExampleAdapter;
    private ArrayList<ExampleItem> mExampleList;
    private RequestQueue mRequestQueue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView = findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
        mExampleList = new ArrayList<>();
        mRequestQueue = Volley.newRequestQueue(this);
        parseJson();
    }
    private void parseJson(){
        String url ="http://maranamassapp.cf/json_getdata.php";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("server_response");
                            for(int i = 0; i < jsonArray.length(); i++){
                                JSONObject ser =jsonArray.getJSONObject(i);
                                String creatorname =  ser.getString("filmname");
                                String imageUrl = ser.getString("filmimage");
                                String cat = ser.getString("filmcat");

                                mExampleList.add(new ExampleItem(imageUrl,creatorname,cat));
                            }

                            mExampleAdapter = new ExampleAdapter(MainActivity.this,mExampleList);
                            mRecyclerView.setAdapter(mExampleAdapter);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
error.printStackTrace();
            }
        });

        mRequestQueue.add(request);
    }
}

我的片段代码

public class Tab1 extends Fragment {
    private RecyclerView mRecyclerView;
    private ExampleAdapter mExampleAdapter;
    private ArrayList<ExampleItem> mExampleList;
    private RequestQueue mRequestQueue;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.tab1, container, false);
        mRecyclerView = rootView.findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
        mExampleList = new ArrayList<>();
        mRequestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());

        // Set the adapter here.
        // Use getActivity() instead of getContext()
        parseJson();
        mExampleAdapter = new ExampleAdapter(getContext(), mExampleList);
        mRecyclerView.setAdapter(mExampleAdapter);
        return rootView;
    }

    private void parseJson() {
        String url = "http://maranamassapp.cf/json_getdata.php";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("server_response");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject ser = jsonArray.getJSONObject(i);
                                String creatorname = ser.getString("filmname");
                                String imageUrl = ser.getString("filmimage");
                                String cat = ser.getString("filmcat");

                                mExampleList.add(new ExampleItem(imageUrl, creatorname, cat));
                            }

                            // Just call notifyDataSetChanged here
                            mExampleAdapter.notifyDataSetChanged();

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        mRequestQueue.add(request);
    }

2 个答案:

答案 0 :(得分:0)

清单文件中缺少Internet权限。

<uses-permission android:name="android.permission.INTERNET" /> 

此外,您还必须将适配器设置为缺少的recyclerView。在您的tab1片段中。创建适配器后添加以下行。

mRecyclerView.setAdapter(mExampleAdapter);

答案 1 :(得分:0)

use this code:-


import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
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.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;


@SuppressLint("ValidFragment")
public class NotificationFragment extends Fragment {
    private View notification_view;
    private RecyclerView uListView;
    private DatabaseReference uDatabaseReference;
    Query query;
    Users users = new Users();
    Context context;

    private FirebaseRecyclerAdapter mFirebaseAdapter;

    public NotificationFragment(Context context) {
        this.context = context;
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_notification, container, false);
        notification_view=view.findViewById(R.id.notification);

        notification_view = view.findViewById(R.id.notification);
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        uDatabaseReference = database.getReference("FastFood");
        uDatabaseReference.child("name");

        Log.i("uDatabaseReference", String.valueOf(uDatabaseReference));
        uListView = view.findViewById(R.id.user_lst);

        uListView.setHasFixedSize(true);
        @SuppressLint("RestrictedApi") LinearLayoutManager llm = new LinearLayoutManager(getContext());
        uListView.setLayoutManager(llm);
        setUpFirebaseAdapter();
        return view;
    }

    private void setUpFirebaseAdapter() {


        FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>()
                .setQuery(uDatabaseReference, Users.class)
                .build();


        Log.i("option",String.valueOf(options));


        mFirebaseAdapter = new FirebaseRecyclerAdapter<Users, UserrViewHolder>
                (options) {

            @NonNull
            @Override
            public UserrViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_single_layout, parent, false);


                return new UserrViewHolder(view);

            }

            @Override
            protected void onBindViewHolder(@NonNull UserrViewHolder holder, int position, @NonNull Users model) {

                // Log.i("username",users.getName());

                holder.txtViewName.setText(model.getName());
               holder.textViewStatus.setText(model.getEmail());
               // holder.setUserImage(model.getImage());

                final String ref_key= getRef(position).getKey();
                holder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        Intent intent=new Intent(getContext(),NotificationActivity.class);
                        intent.putExtra("key",ref_key);
                        startActivity(intent);


                    }
                });

            }
        };

        uListView.setAdapter(mFirebaseAdapter);



    }







    class UserrViewHolder extends RecyclerView.ViewHolder{
        public TextView txtViewName,textViewStatus;

        View mView;
        public UserrViewHolder(View itemView) {
            super(itemView);

            this.mView=itemView;

            txtViewName =mView.findViewById(R.id.user_single_name);
            textViewStatus =mView.findViewById(R.id.user_single_status);



        }



    }
    @Override
    public void onStart() {
        super.onStart();
        mFirebaseAdapter.startListening();




    }

}