Android 显示领域数据的通用适配器

Android 显示领域数据的通用适配器,android,realm,Android,Realm,我试图创建泛型适配器来显示RecyclerView上的领域数据,但我遇到了以下编译时错误 错误:(25,8)错误:SearchListAdapter不是抽象的,也不是抽象的 重写抽象方法 适配器中的onBindViewHolder(SearchListAdapter.SearchListViewHolder,int) 我有两个类,即ObservationInfo和CallReasonInfo派生自RealmObject 访问适配器的用法如下 访问观察信息 RealmResults observa

我试图创建泛型适配器来显示
RecyclerView
上的领域数据,但我遇到了以下编译时错误

错误:(25,8)错误:SearchListAdapter不是抽象的,也不是抽象的 重写抽象方法 适配器中的onBindViewHolder(SearchListAdapter.SearchListViewHolder,int)

我有两个类,即
ObservationInfo
CallReasonInfo
派生自
RealmObject

访问适配器的用法如下

访问观察信息

RealmResults observationfos=realm.where(ObservationInfo.class).equalTo(“productCategory”,lookupValue).findAll();
适配器=新的SearchListAdapter(ObservationFos,lookupType);
rvSearchItemListView.setAdapter(适配器);
要访问CallReason信息

RealmResults callReasonInfos=realm.where(CallReasonInfo.class).equalTo(“callStatusName”,lookupValue).findAll();
adapter=新的SearchListAdapter(callReasonInfos,lookupType);
rvSearchItemListView.setAdapter(适配器);
这是我的密码

public class SearchListAdapter <E extends RealmResults>  extends RecyclerView.Adapter<SearchListAdapter.SearchListViewHolder> {


    private E lookupInfo;
    private String lookupType;
    public  SearchListAdapter(E resultInfo, String lookupType) {    
        this.lookupType = lookupType; 
        this.lookupInfo  = resultInfo;
    }   

    @Override
    public SearchListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

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

        SearchListAdapter.SearchListViewHolder viewHolder = new SearchListAdapter.SearchListViewHolder(v);

        return viewHolder;

    }

    @Override
    public void onBindViewHolder(SearchListViewHolder holder, int position) {
        holder.bind(lookupInfo.get(position));
    }

    @Override
    public int getItemCount() {
        return lookupInfo==null ? 0 : lookupInfo.size();
    }

    public class SearchListViewHolder extends RecyclerView.ViewHolder {

        private TextView tvItemName;

        public SearchListViewHolder(View itemView) {
            super(itemView);

            tvItemName = (TextView) itemView.findViewById(R.id.tvItemName);


        }

        public void bind(RealmModel item){



            tvItemName.setText(((ObservationInfo)item).getObservationName());
        }
    }
}
公共类SearchListAdapter扩展了RecyclerView.Adapter{
私人E lookupInfo;
私有字符串查找类型;
publicsearchlistadapter(E resultInfo,stringlookuptype){
this.lookupType=lookupType;
this.lookupInfo=resultInfo;
}   
@凌驾
public SearchListViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.seach_列表项,父项,假);
SearchListAdapter.SearchListViewHolder viewHolder=新的SearchListAdapter.SearchListViewHolder(v);
返回视图持有者;
}
@凌驾
BindViewHolder上的公共无效(SearchListViewHolder,int位置){
holder.bind(lookupInfo.get(position));
}
@凌驾
public int getItemCount(){
返回lookupInfo==null?0:lookupInfo.size();
}
公共类SearchListViewHolder扩展了RecyclerView.ViewHolder{
私有文本视图TVTItemName;
public SearchListViewHolder(查看项目视图){
超级(项目视图);
TVTItemName=(TextView)itemView.findViewById(R.id.TVTItemName);
}
公共无效绑定(RealmModel项){
tvItemName.setText(((ObservationInfo)item.getObservationName());
}
}
}
这应该是一个静态的内部类

public static class SearchListViewHolder extends RecyclerView.ViewHolder {

此外,我认为这是错误的:

public class SearchListAdapter <E extends RealmResults>  extends RecyclerView.Adapter<SearchListAdapter.SearchListViewHolder> {    
    private E lookupInfo;
使用

公共类SearchListAdapter扩展了RealmRecyclServiceAdapter{
公共SearchListAdapter(上下文、RealmResults结果){
超级(上下文、结果、真实);
}

编辑:要使视图保持架通用,需要向其添加通用参数

public class SearchListAdapter<E extends RealmModel>  extends RealmRecyclerViewAdapter<E, SearchListViewHolder<E>> {
    // ...

}

public abstract class SearchListViewHolder<E extends RealmModel> extends RecyclerView.ViewHolder {
    public SearchListViewHolder(View view) {
        super(view);
    }

    public abstract void bind(E e);
}
公共类SearchListAdapter扩展了RealmRecyclServiceAdapter{
// ...
}
公共抽象类SearchListViewHolder扩展了RecyclerView.ViewHolder{
公共搜索列表视图持有者(视图){
超级(视图);
}
公开摘要无效约束(E);
}

@EpicPandaForce您能帮助我实现我的
bind
函数吗?我如何动态获取与特定CALS相关的字段?例如对于
observationInfo
我有不同的方法获取值,对于
callReasonInfo
我有不同的方法。
公共无效绑定(realmodel项){tvItemName.setText(((ObservationInfo)项).getObservationName();}
public static class SearchListViewHolder extends RecyclerView.ViewHolder {
public class SearchListAdapter <E extends RealmResults>  extends RecyclerView.Adapter<SearchListAdapter.SearchListViewHolder> {    
    private E lookupInfo;
public class SearchListAdapter<E extends RealmModel>  extends RecyclerView.Adapter<SearchListAdapter.SearchListViewHolder> {    
    private RealmResults<E> lookupInfo;
repositories {
    jcenter()
}

dependencies {
    compile 'io.realm:android-adapters:1.4.0'
}
public class SearchListAdapter<E extends RealmModel>  extends RealmRecyclerViewAdapter<E, SearchListAdapter.SearchListViewHolder> {
    public SearchListAdapter(Context context, RealmResults<E> results) {
         super(context, results, true);
    }
public class SearchListAdapter<E extends RealmModel>  extends RealmRecyclerViewAdapter<E, SearchListViewHolder<E>> {
    // ...

}

public abstract class SearchListViewHolder<E extends RealmModel> extends RecyclerView.ViewHolder {
    public SearchListViewHolder(View view) {
        super(view);
    }

    public abstract void bind(E e);
}