RecyclerView"无法解析符号"错误 - Android Studio

时间:2016-09-21 14:44:36

标签: android android-recyclerview

我无法解决所有RecyclerView上的符号错误。到底是怎么回事?因为我在RecyclerView上有错误,所以我在LayoutManager上也有错误。我的最后四个覆盖声明是在错误的地方,我不知道他们去哪里。我是初学者,对编程有非常基本的了解,所以我不知道如何解决这个问题。我正在上课,但教授根本没有帮助。

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);
            }
        }
}

6 个答案:

答案 0 :(得分:19)

这些是您的导入声明,

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;

您似乎尚未导入RecyclerViewLayoutManager以及您在Android中内置的任何内容。您只需要导入您看到红线的类。

How to Import?

按Windows上的alt + Enter或Mac上的alt + return进行导入。你应该把光标放在课程的最后。

如果您还没有导入库,请将其添加到依赖项下的build.gradle文件中。

compile 'com.android.support:recyclerview-v7:21.0.+' 

更新:

最新的回收库是:

  1. 使用最新的gradle版本。 3.0或以上。

    implementation 'com.android.support:recyclerview-v7:28.0.0'
    
  2. 使用旧的gradle版本

    compile 'com.android.support:recyclerview-v7:28.0.0'
    

答案 1 :(得分:10)

对于最新版本的Android Studio 3:

在Gradle Scripts,build.gradle(Module)

下找到您的gradle文件

添加依赖项:

dependencies {
...
    implementation 'com.android.support:cardview-v7:27.0.+'
    implementation 'com.android.support:recyclerview-v7:27.0.+'

}

同步您的gradle文件(文件/同步项目与gradle文件)。

返回您的代码并点击遗漏参考上的ALT + Enter。

应该是它。

答案 2 :(得分:3)

将Gradle更新为4.4之后

我发现我的进口货在抱怨RecyclerView

事实证明,我不再需要导入单独的RecyclerView依赖项

以前:

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'

更新后:

implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'

答案 3 :(得分:2)

在Android Studio 3.2.1上(建于2018年10月8日),对于一个新项目,我只需要添加

implementation "com.android.support:design:$support_version"

在应用程序build.gradle中

。 support_version与“新建项目”向导在appcompat-v7中生成的版本相同。

答案 4 :(得分:0)

此解决方案有效:

  1. 添加依赖项
  2. 清理并重建项目

以红色错误返回主活动 alt +输入 android建议导入库,它可以工作。在清理并重建项目之前不存在。

答案 5 :(得分:0)

对于API 28或更高版本:

public function store(Request $request) {
     $user_id = Auth::user()->id;
        $new_report = new Report();

        $forminputs = $request->all();

        foreach($forminputs as $forminput) {

        $request->image->move('images/report_images', $request->image->getClientOriginalName());
        $new_report->user_id = $user_id;
        $new_report->remark = $request->remark;
        $new_report->sub_remark = $request->sub_remark;
        $new_report->area_id = $request->area_id;
        $new_report->store_id = $request->store_id;
        $new_report->product_id = $request->product_id;
        $new_report->display = $request->display;
        $new_report->storage = $request->storage;
        $new_report->image = 'images/report_images/'.$request->image->getClientOriginalName();
        $new_report->save();

        }
}

也许这可以帮助某人。