From 462d583986e4739f7a75227b3fde4da587502ba5 Mon Sep 17 00:00:00 2001 From: Administrator <123> Date: Fri, 05 Nov 2021 03:20:39 +0000 Subject: [PATCH] 主页 动态UI adapter null视图问题修改 分页框架 include问题 --- app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java | 90 ++++++++++++++++++++++---------------------- 1 files changed, 45 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java b/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java index 3f25fc8..3d2cdb0 100644 --- a/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java +++ b/app/src/main/java/com/duqing/missions/base/adapter/BaseAdapter.java @@ -2,17 +2,13 @@ import android.graphics.drawable.Drawable; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -import com.duqing.missions.R; import com.duqing.missions.base.activities.BaseActivity; -import com.duqing.missions.common.NullViewHolder; import com.duqing.missions.databinding.LayoutNullBinding; import com.duqing.missions.util.DeviceUtil; @@ -26,14 +22,14 @@ * T 数据类型 * V 适配器视图 */ -public abstract class BaseAdapter<B extends ViewBinding,A extends BaseActivity,T> extends RecyclerView.Adapter { +public abstract class BaseAdapter<B extends ViewBinding,T> extends RecyclerView.Adapter { protected List<T> mData = new ArrayList<>(); protected Drawable nullDrawable; protected String nullTxt="暂无数据"; protected String TAG = "BaseAdapter"; - protected A activity; + protected BaseActivity activity; public BaseAdapter(){ } @@ -54,48 +50,38 @@ @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - // get genericity "B" - Class<B> entityClass = (Class<B>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; - try { - /* for(Method method: entityClass.getMethods()){ - StringBuilder sb = new StringBuilder(); - for(Class type : method.getParameterTypes()){ - sb.append(type.getSimpleName()+","); - } - Log.e(TAG,String.format("method:%s,return:%s,param:%s",method.getName(),method.getReturnType().getSimpleName(),sb.toString())); - }*/ - Method method = entityClass.getMethod("inflate", LayoutInflater.class,ViewGroup.class,boolean.class);//get method from name "inflate"; - B vBind = (B) method.invoke(entityClass,LayoutInflater.from(parent.getContext()),parent,false);//execute method to create a objct of viewbind; - return new ViewBindHolder(vBind); - } catch (Exception e) { - e.printStackTrace(); + if(viewType == 1 ){ + // get genericity "B" + Class<B> entityClass = (Class<B>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + try { + /* for(Method method: entityClass.getMethods()){ + StringBuilder sb = new StringBuilder(); + for(Class type : method.getParameterTypes()){ + sb.append(type.getSimpleName()+","); + } + Log.e(TAG,String.format("method:%s,return:%s,param:%s",method.getName(),method.getReturnType().getSimpleName(),sb.toString())); + }*/ + Method method = entityClass.getMethod("inflate", LayoutInflater.class,ViewGroup.class,boolean.class);//get method from name "inflate"; + B vBind = (B) method.invoke(entityClass,LayoutInflater.from(parent.getContext()),parent,false);//execute method to create a objct of viewbind; + return new ViewBindHolder(vBind); + } catch (Exception e) { + e.printStackTrace(); + } } - return new NullViewHolder( LayoutNullBinding.inflate(LayoutInflater.from(parent.getContext()))); - } - - /** - * - * 创建视图 - * @param parent - * @param layout 视图文件 - * @param viewType 视图类型 1 加载正常视图 其他则加载空数据 - * @return - */ - protected View getRootView(@NonNull ViewGroup parent, @LayoutRes int layout,int viewType ){ - //MyLog.i(TAG,"getRootView viewType:"+viewType); - return LayoutInflater.from(parent.getContext()).inflate(viewType==1?layout: R.layout.layout_null,parent,false); + return new NullViewHolder( LayoutNullBinding.inflate(LayoutInflater.from(parent.getContext()),parent,false)); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { //MyLog.i(TAG,"onBindViewHolder position:"+position+" "+mData.size()+" "+getItemViewType(position)); - if(getItemViewType(position)==0){ - return; + if(activity == null){ + activity = (BaseActivity) holder.itemView.getContext(); } - try { - activity = (A) holder.itemView.getContext(); - }catch (Exception e){} - bindView((ViewBindHolder) holder,mData.size()==0?null:mData.get(position),position); + if(getItemViewType(position)==0){ + bindView((NullViewHolder) holder); + }else { + bindView((ViewBindHolder) holder, mData.size() == 0 ? null : mData.get(position), position); + } } /** @@ -127,6 +113,10 @@ protected abstract void bindView(ViewBindHolder holder,T data,int position); + protected void bindView(NullViewHolder holder){ + + } + @Override public int getItemCount() { //默认显示空视图,若不显示空视图则重写该方法,返回mData.size() @@ -138,17 +128,27 @@ public int getItemViewType(int position) { //当下标为0,数据集合为0 返回0(意味当前应显示空数据视图)) //MyLog.i(TAG,"getItemViewType position:"+position+" mdata:"+mData.size()+" "+(position ==0 && mData.size()==0)); - return position ==0 && mData.size()==0?0:1; + return position == 0 && mData.size()==0?0:1; } public class ViewBindHolder extends RecyclerView.ViewHolder{ - - B binding; - + public B binding; public ViewBindHolder( B binding) { super(binding.getRoot()); this.binding = binding; } } + /** + * 空数据显示 + * Created by Administrator on 2021/10/28 0028. + */ + public class NullViewHolder extends RecyclerView.ViewHolder { + LayoutNullBinding binding; + + public NullViewHolder(LayoutNullBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } } -- Gitblit v1.9.1