我已经转换了以下活动,该活动解析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);
}
答案 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();
}
}