安卓笔记:LayoutInflater.inflate的用法

本文详细介绍了Android开发中inflate方法的使用方式及其两个重载版本。通过实例解释了如何使用inflate方法将布局文件转化为View对象,并说明了不同参数的作用。

inflate是Android开发中经常使用到的将布局作为一个view来引用的一个方法。inflate具有两个可以使用重载方法:

  1. inflate(int resource, ViewGroup root)
  2. inflate(int resource, ViewGroup root, boolean attachToRoot)

第一个参数指向的是你想要引进的布局资源ID。第二个参数表示该布局的大小限制在root这个Viewgroup中。第三个参数则表示是否将root作为该布局的Viewgroup。true表示该布局是附着在root中的,false表示该布局不附着在root中。

package com.example.assignment.client; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.example.assignment.R; import com.example.assignment.client.repo.ClientItem; import com.example.assignment.client.repo.OfflineItem; import com.example.assignment.client.repo.OnlineItem; import com.example.assignment.client.repo.TextItem; import com.example.assignment.dashboard.ModeAdapter; import java.util.List; public class ClientAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ private List<ClientItem> itemList; public ClientAdapter(List<ClientItem> items) { this.itemList = items; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(parent.getContext()); switch (viewType) { case ClientItem.TYPE_ONLINE: View onlineView = inflater.inflate(R.layout.item_on_client, parent, false); return new OnlineViewHolder(onlineView); case ClientItem.TYPE_OFFLINE: View offlineView = inflater.inflate(R.layout.item_off_client, parent, false); return new OfflineViewHolder(offlineView); case ClientItem.TYPE_TEXT: View textView = inflater.inflate(R.layout.item_client_text, parent, false); return new TextViewHolder(textView); default: throw new IllegalArgumentException("Invalid Type"); } } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { ClientItem item = itemList.get(position); switch (item.getItemType()) { case ClientItem.TYPE_ONLINE: bindOnlineItem((OnlineViewHolder) holder, (OnlineItem) item); break; case ClientItem.TYPE_OFFLINE: bindOfflineItem((OfflineViewHolder) holder, (OfflineItem) item); break; case ClientItem.TYPE_TEXT: bindTextItem((TextViewHolder) holder, (TextItem) item); break; } } @Override public int getItemViewType(int position) { return itemList.get(position).getItemType(); } @Override public int getItemCount() { return itemList.size(); } //Viewholder static class OnlineViewHolder extends RecyclerView.ViewHolder { TextView deviceName, downloadSpeed, uploadSpeed, newTag; ImageView deviceIcon, wifiIcon, backIcon; public OnlineViewHolder(View view) { super(view); deviceName = view.findViewById(R.id.tv_client_name); downloadSpeed = view.findViewById(R.id.tv_client_download); uploadSpeed = view.findViewById(R.id.tv_client_upload); deviceIcon = view.findViewById(R.id.iv_client); wifiIcon = view.findViewById(R.id.iv_client_wifi); newTag = view.findViewById(R.id.tv_new); backIcon = view.findViewById(R.id.iv_client_back); } } static class OfflineViewHolder extends RecyclerView.ViewHolder { TextView deviceName, lastTime; ImageView deviceIcon; public OfflineViewHolder(@NonNull View itemView) { super(itemView); deviceName = itemView.findViewById(R.id.tv_client_name); lastTime = itemView.findViewById(R.id.tv_last_online_time); deviceIcon = itemView.findViewById(R.id.iv_client); } } static class TextViewHolder extends RecyclerView.ViewHolder{ TextView numClient, clearAll; public TextViewHolder(@NonNull View itemView) { super(itemView); numClient = itemView.findViewById(R.id.num_clients); clearAll = itemView.findViewById(R.id.tv_clear_all); } } // 数据绑定方法 private void bindOnlineItem(OnlineViewHolder holder, OnlineItem item) { holder.deviceName.setText(item.getDeviceName()); holder.downloadSpeed.setText(item.getDownloadSpeed()); holder.uploadSpeed.setText(item.getUploadSpeed()); holder.deviceIcon.setImageResource(item.getDeviceIcon()); holder.wifiIcon.setImageResource(item.getWifiIcon()); holder.newTag.setVisibility(item.isShowNewTag() ? View.VISIBLE : View.GONE); } private void bindOfflineItem(OfflineViewHolder holder, OfflineItem item) { holder.deviceName.setText(item.getDeviceName()); holder.lastTime.setText(item.getLastTime()); holder.deviceIcon.setImageResource(item.getDeviceIcon()); } private void bindTextItem(TextViewHolder holder, TextItem item) { holder.numClient.setText(item.getNumClients()); holder.clearAll.setVisibility(item.isShowClear() ? View.VISIBLE : View.GONE); // holder.clearButton.setOnClickListener(v -> { // // 处理清除操作 // }); } } 这是我的adapter 请构建数据并注入 布局为text底下3个oline 下面text再是2个offlinepublic class MainClientActivity extends BaseMvvmActivity<ActivityMainClientBinding> { @Nullable @Override protected ActivityMainClientBinding bindContentView(@Nullable Bundle bundle) { return ActivityMainClientBinding.inflate(getLayoutInflater()); } @Override protected void subscribeViewModel(@Nullable Bundle bundle) { } }
最新发布
09-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值