java - 此自定义数组适配器不适用于整数
问题描述
我已经为练习编写了一个自定义数组适配器,所以.. 当我在 data.java 类中使用字符串作为变量时,下面的代码可以工作,但是如果我使用整数变量,它将被安装在 AVD 中但不会打开......
主要活动.java
在这里输入代码
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<data> arr= new ArrayList<>();
arr.add(new data("2","6","india","4","22222"));
ListView listView=findViewById(R.id.list);
adpater a=new adpater(this,arr);
listView.setAdapter(a);
}
}
适配器.java
public class adpater extends ArrayAdapter<data> {
public adpater(Activity context, List<data> arrayList) {
super(context,0, arrayList);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if(convertView==null){
convertView= LayoutInflater.from(getContext()).inflate(R.layout.list,parent,false);
}
data currentitem = getItem(position);
TextView textView=convertView.findViewById(R.id.location);
TextView textView1=convertView.findViewById(R.id.recovered);
TextView textView2=convertView.findViewById(R.id.dead);
TextView textView3=convertView.findViewById(R.id.confirmed);
TextView textView4=convertView.findViewById(R.id.updated);
textView.setText(currentitem.getCountry());
textView1.setText(currentitem.getRecovered());
textView2.setText(currentitem.getDead());
textView3.setText(currentitem.getConfirmed());
textView4.setText(currentitem.getUpdated());
return convertView;
}
}
数据.java
public class data {
private String confirmed;
private String dead;
private String country;
private String recovered;
private String updated;
public String getConfirmed() {
return confirmed;
}
public String getDead() {
return dead;
}
public String getRecovered() {
return recovered;
}
public String getCountry() {
return country;
}
public String getUpdated() {
return updated;
}
public data(String Confirmed,String Dead,String Country,String Recovered,String Updated){
confirmed=Confirmed;
dead=Dead;
country=Country;
recovered=Recovered;
updated=Updated;
}
}
我的问题是,如果我在这里使用任何整数变量..它将不起作用。我不知道这是不是一个好问题,但这真的把我搞砸了......
解决方案
根本原因
当您使用String
变量时,TextView
将使用setText(CharSequence)方法并且效果很好。但是当你使用int
变量时,TextView
会使用setText(int)方法,param是一个特殊的int类型,它指的是R类中编译器在构建时创建的int资源类型,如果你不明白将正常的 int 传递给它。
解决方案
将类型int
转换为String
类型,因此TextView
将使用setText(CharSequence)
方法代替。
假设在数据类中,confirmed
变量是一种int
类型,然后将代码从
textView3.setText(currentitem.getConfirmed());
到
textView3.setText(currentitem.getConfirmed() + "");
或者
textView3.setText(String.valueOf(currentitem.getConfirmed()));
推荐阅读
- ios - 如何过滤附件视图中的集合视图的数组列表
- python-3.x - 从边界框到面具
- typo3 - 在 TYPO3 v9.5 中提交表单时的问题
- elixir - 无法启动子项:EvercamAdmin.Storage ** (EXIT) :badarg elixir
- php - 在 SQL (PHP) 中,如何搜索使用 XOR 加密数据的行?
- node.js - 不推荐使用 hsts 不推荐使用“includeSubdomain”参数
- java - 如何在 Spring Boot Hibernate 多租户应用程序中使用 C3P0 来管理连接池?
- angularjs - 如何在不重新加载AngularJS中的控制器的情况下更改url路径
- java - 让用户在 cmd 中选择多个元素
- python - 如何在 Odoo 12 中向多个用户(电子邮件地址)发送电子邮件模板