Please let me know where I'm doing the error. I'm implementing a recycler listview in a fragment. When I run the app and press the fragment button I'm getting this error:
09-09 13:26:44.132 31899-31899/xxxxxxx.xxxxxxxmessenger E/RecyclerView: No adapter attached; skipping layout
09-09 13:26:55.725 31899-31899/xxxxxxx.xxxxxxxmessenger E/AndroidRuntime: FATAL EXCEPTION: main
Process: xxxxxxx.xxxxxxxmessenger, PID: 31899
android.content.res.Resources$NotFoundException: Resource ID #0x7f04002b
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:190)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2101)
at android.content.res.Resources.getLayout(Resources.java:1115)
at android.view.LayoutInflater.inflate(LayoutInflater.java:424)
at freemig.freemigmessenger.adapter.ConnectionsAdapter.onCreateViewHolder(ConnectionsAdapter.java:35)
at xxxxxxx.xxxxxxxmessenger.adapter.ConnectionsAdapter.onCreateViewHolder(ConnectionsAdapter.java:21)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6411)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5597)
Fragment Code
public class All_Connection_fragment extends Fragment {
AllConnectionService allConnectionsAPIService;
RecyclerView recyclerView;
List<ConnectionDatum> connectionData = new ArrayList<>();
ConnectionsAdapter connectionsAdapter;
String TimeZone;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
private UserAuthenticationKey userAuthenticationKey;
public All_Connection_fragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootview = inflater.inflate(R.layout.activity_all_connection_fragment, container, false);
allConnectionsAPIService = RestClient.getClient().create(AllConnectionService.class);
recyclerView = rootview.findViewById(R.id.allConnectionsRecyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
connectionsAdapter= new ConnectionsAdapter(connectionData,R.layout.all_connection_list,
getActivity().getApplicationContext());
recyclerView.setAdapter(connectionsAdapter);
userAuthenticationKey = new UserAuthenticationKey(getActivity());
sharedPreferences = this.getActivity().getSharedPreferences("user authentication", MODE_PRIVATE);
editor = sharedPreferences.edit();
TimeZone = "0";
connectionsList();
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(1000);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// update TextView here!
connectionsList();
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
return rootview;
}
private void connectionsList() {
final ConnectionRequest connectionRequest = new ConnectionRequest(
TimeZone.toString(),
userAuthenticationKey.getUserId().toString());
Call<ConnectionResponse> call = allConnectionsAPIService.allConnection(userAuthenticationKey.getUserTokenKey(),connectionRequest);
call.enqueue(new Callback<ConnectionResponse>() {
@Override
public void onResponse(Call<ConnectionResponse> call, Response<ConnectionResponse> response) {
// Toast.makeText(AllConnectionActivity.this, "" +response.body() , Toast.LENGTH_LONG).show();
connectionData.addAll(response.body().getData());
connectionsAdapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<ConnectionResponse> call, Throwable t) {
Toast.makeText(getActivity(), "All connection list doesn't response, Please try again",
Toast.LENGTH_LONG).show();
}
});
}
}
Adapter code
public class ConnectionsAdapter extends RecyclerView.Adapter<ConnectionsAdapter.ConnectionsViewHolder> {
private List<ConnectionDatum> connectionData;
private int rowLayout;
private Context context;
public ConnectionsAdapter(List<ConnectionDatum> connectionData, int rowLayout, Context context) {
this.connectionData = connectionData;
this.rowLayout = rowLayout;
this.context = context;
}
@Override
public ConnectionsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.all_connection_list, parent,false);
return new ConnectionsViewHolder(view);
}
@Override
public void onBindViewHolder(ConnectionsViewHolder holder, int position) {
holder.avater.setTag(connectionData.get(position).getAvatar());
holder.username.setText(connectionData.get(position).getFullName());
}
@Override
public int getItemCount() {
return connectionData.size();
}
public class ConnectionsViewHolder extends RecyclerView.ViewHolder {
ImageView avater;
TextView username;
public ConnectionsViewHolder(View itemView) {
super(itemView);
avater = itemView.findViewById(R.id.avatar);
username = itemView.findViewById(R.id.username);
}
}
}