Не удалось расширить RecyclerView.Adapter через пару часов даже в новом проекте, чтобы - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь расширить RecyclerView.Adapter, но не могу расширить его, как RecyclerView.Adapter<ClassAdapterName.ClassAdapterNameViewHolder> Я не знаю, что произошло через пару часов, я не смог расширить адаптер, но я сделал это, даже не пытаясь создать новый проект.и расширить его, но, кажется, это не дает мне возможность расширить.Спасибо за помощь

вот мой сборщик.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "sensors.device.divicetest"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"


    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


}

dependencies {

    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:support-v4:27.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:cardview-v7:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation 'me.itangqi.waveloadingview:library:0.3.5'
    implementation 'com.github.lzyzsd:circleprogress:1.2.1'
    implementation 'com.appolica:flubber:1.0.1'
    implementation 'com.github.nisrulz:easydeviceinfo:2.4.1'


}

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

что я забыл, так это добавить AdapterViewHolder, который расширяет RecyclerView.ViewHolder

, благодаря @sHOLE, сначала я должен был добавить это

public class FileListAdapterViewHolder extends RecyclerView.ViewHolder{
        public FileListAdapterViewHolder(View itemView) {
            super(itemView);
        }
    }

, а затем расширить до

public class FileListAdapter extends RecyclerView.Adapter<FileListAdapter.FileListAdapterViewHolder> {

    public class FileListAdapterViewHolder extends RecyclerView.ViewHolder{
        public FileListAdapterViewHolder(View itemView) {
            super(itemView);
        }
    }
}
0 голосов
/ 26 июня 2018

Проблема здесь в том, что вы указываете FileListAdapter в ViewHolder части расширения, следовательно, он будет искать ViewHolder в вашем классе Adapter (что вы еще не сделали)

В идеале,при реализации классов Adapter вы должны сначала расширить класс как RecyclerView.Adapter<RecyclerView.ViewHolder>, а после того, как вы реализовали свой собственный класс ViewHolder, заменять его во всех упоминаниях RecyclerView.ViewHolder

0 голосов
/ 26 июня 2018

Как сказал SHOLE, у вас нет класса ViewHolder внутри адаптера.Вы можете сделать следующее:

public class FileListAdapter extends RecyclerView.Adapter<FileListAdapter.ViewHolder> {

       public static class ViewHolder extends RecyclerView.ViewHolder {
           public ViewHolder(View v) {
           // initiate your views
           }
       } 

       @Override
       public FileListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

           View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_item_layout, parent, false);

           ViewHolder vh = new ViewHolder(v);

           return vh;
       }  


 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...