clearButton.setOnClickListener(this);

本文分享了一位Android初学者在实现单选框功能时遇到的问题及解决过程。作者尝试编写一个简单的应用程序,该程序包含一个可以清除选择的按钮。在遇到编译错误后,通过调整代码使其正常工作。

       刚学习Android编程不久,属于菜鸟级别,呵呵,努力ing........

      昨天编写了一个在屏幕中现实单选框的小程序,MainActivity程序如下:

package com.example.w01;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;
//import android.view.View.OnClickListener;


public class MainActivity extends Activity {
private RadioGroup mRadioGroup;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("RadioGroupActivity");
      
        mRadioGroup=(RadioGroup)findViewById(R.id.menu);
        Button clearButton=(Button)findViewById(R.id.clear);
        clearButton.setOnClickListener(this);
    }
   public void onClick(View v) {
        mRadioGroup.clearCheck();
   
       
    }
  }

但是编译老是有错误,费了很大劲,做了如下修改:

public class MainActivity extends Activity implements View.OnClickListener {

编译就能通过了,菜鸟级别不明白为什么,还请走过路过的大神不吝赐教。

运行界面:

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
package com.example.assignment.client.repo; public class OnlineItem implements ClientItem { private String deviceName; private int deviceIcon; private boolean showNewTag; // 控制"New"标签的显示 private String downloadSpeed; private String uploadSpeed; private int wifiIcon; // Wi-Fi信号图标资源 // 构造方法 public OnlineItem(String deviceName, int deviceIcon, boolean showNewTag, String downloadSpeed, String uploadSpeed, int wifiIcon) { this.deviceName = deviceName; this.deviceIcon = deviceIcon; this.showNewTag = showNewTag; this.downloadSpeed = downloadSpeed; this.uploadSpeed = uploadSpeed; this.wifiIcon = wifiIcon; } // Getter方法 public String getDeviceName() { return deviceName; } public int getDeviceIcon() { return deviceIcon; } public boolean isShowNewTag() { return showNewTag; } public String getDownloadSpeed() { return downloadSpeed; } public String getUploadSpeed() { return uploadSpeed; } public int getWifiIcon() { return wifiIcon; } @Override public int getItemType() { return ClientItem.TYPE_ONLINE; } } 和package com.example.assignment.client.repo; public class OfflineItem implements ClientItem { private String deviceName; private int deviceIcon; private String lastTime; // 构造方法 public OfflineItem(String deviceName, int deviceIcon, String lastTime) { this.deviceName = deviceName; this.deviceIcon = deviceIcon; this.lastTime = lastTime; } // Getter方法 public String getDeviceName() { return deviceName; } public int getDeviceIcon() { return deviceIcon; } public String getLastTime() { return lastTime; } @Override public int getItemType() { return ClientItem.TYPE_ONLINE; } } 和package com.example.assignment.client.repo; public class TextItem implements ClientItem{ private String numClients; private boolean showClear; public TextItem(String numClients, boolean showClear) { this.numClients = numClients; this.showClear = showClear; } public String getNumClients() { return numClients; } public boolean isShowClear() { return showClear; } @Override public int getItemType() { return ClientItem.TYPE_TEXT; } } 这是我的3个写在cyclervie里面的Item 我应该怎么实现apapter呢
09-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值