Reputation: 325
I am getting cannot resolve symbol errors on all my RecyclerView's. What is going on? Because I have an error with RecyclerView, I also have errors on LayoutManager. My last four Override statements are in the wrong place and I don't know where they go. I am a beginner and have a very basic knowledge of programming so I don't know how to fix this. I am taking a class but the professor isn't helpful at all.
package com.bignerdranch.android.criminalintent;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
public class CrimeListFragment extends Fragment {
private RecyclerView mCrimeRecyclerView;
private CrimeAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_crime_list, container, false);
mCrimeRecyclerView = (RecyclerView) view
.findViewById(R.id.crime_recycler_view);
mCrimeRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
@Override
public void onResume() {
super.onResume();
updateUI();
}
private void updateUI(){
CrimeLab crimeLab = CrimeLab.get(getActivity());
List<Crime> crimes = crimeLab.getCrimes();
if (mAdapter == null) {
mAdapter = new CrimeAdapter(crimes);
mCrimeRecyclerView.setAdapter(mAdapter);
} else {
mAdapter.notifyDataSetChanged();
}
}
private class CrimeAdapter extends RecyclerView.Adapter<CrimeHolder> {
private List<Crime> mCrimes;
public CrimeAdapter(List<Crime> crimes) {
mCrimes = crimes;
}
}
private class CrimeHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
private TextView mTitleTextView;
private TextView mDateTextView;
private CheckBox mSolvedCheckBox;
private Crime mCrime;
public CrimeHolder(View itemView) {
super(itemView);
mTitleTextView = (TextView)
itemView.findViewById(R.id.list_item_crime_title_text_view);
mDateTextView = (TextView)
itemView.findViewById(R.id.list_item_crime_date_text_view);
mSolvedCheckBox = (CheckBox)
itemView.findViewById(R.id.list_item_crime_solved_check_box);
}
public void bindCrime(Crime crime) {
mCrime = crime;
mTitleTextView.setText(mCrime.getTitle());
mDateTextView.setText(mCrime.getDate().toString());
mSolvedCheckBox.setChecked(mCrime.isSolved());
}
@Override
public CrimeHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
View view = layoutInflater.inflate(R.layout.list_item_crime, parent, false);
return new CrimeHolder(view);
}
@Override
public void onBindViewHolder(CrimeHolder holder, int position) {
Crime crime = mCrimes.get(position);
holder.bindCrime(crime);
}
@Override
public int getItemCount() {
return mCrimes.size();
}
@Override
public void onClick(View v) {
Intent intent = CrimeActivity.newIntent(getActivity(), mCrime.getId());
startActivity(intent);
}
}
}
Upvotes: 17
Views: 41629
Reputation: 2023
These are your import statements,
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
Looks like you haven't imported RecyclerView
, LayoutManager
and anything which you are using inbuilt in Android. You just need to import the classes that you are seeing red lines under.
How to Import?
Press alt + Enter
on windows, or alt + return
on mac to import. You should have your cursor at the end of class.
If you haven't imported library, then add this to build.gradle
file under dependancies.
compile 'com.android.support:recyclerview-v7:21.0.+'
Update :
Latest recycler library is this :
With latest gradle version. 3.0 or above.
implementation 'com.android.support:recyclerview-v7:28.0.0'
with old gradle version
compile 'com.android.support:recyclerview-v7:28.0.0'
Update: latest Androidx Jetpack dependencies
dependencies {
implementation "androidx.recyclerview:recyclerview:1.1.0"
// For control over item selection of both touch and mouse driven selection
implementation "androidx.recyclerview:recyclerview-selection:1.1.0"
}
source : https://developer.android.com/jetpack/androidx/releases/recyclerview
Upvotes: 23
Reputation: 43
For API 28 or higher:
import androidx.recyclerview.widget.RecyclerView;
Maybe this helps someone.
Upvotes: 1
Reputation: 11
This solution works:
Back to main-activity in red error press alt+enter android suggest to import library and it works. This was not there before clean and rebuild the project.
Upvotes: 1
Reputation: 3321
On Android Studio 3.2.1, build on October 8 2018, for a new project, all I need is to add
implementation "com.android.support:design:$support_version"
in app build.gradle. The support_version is the same as the one in appcompat-v7 generated by New Project wizard.
Upvotes: 2
Reputation: 737
After updating Gradle to 4.4
I find that my import is complaining about the RecyclerView
it turns out that I no longer need to import separate RecyclerView dependency
Previously:
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
After update:
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
Upvotes: 3
Reputation: 52444
For the latest version of Android Studio 3:
Find your gradle file under Gradle Scripts, build.gradle (Module)
Add dependency:
dependencies {
...
implementation 'com.android.support:cardview-v7:27.0.+'
implementation 'com.android.support:recyclerview-v7:27.0.+'
}
Sync your gradle file (File / Sync Project with gradle files).
Go back to your code and hit ALT+Enter on the missing reference.
That should be it.
Upvotes: 11