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