java - 动态添加元素到类
问题描述
如何动态地将元素添加到类中。我有一个列表视图组件和字符串变量中的信息列表。它们由星号和 # 分隔。我需要一个适配器ListView
并使用这种方法。静态方法是可以的。但是动态方法不起作用。
这是我的代码:
public class transModel{
public String DateTime;
public String Action;
public String Amount;
public String DestAccount;
public transModel(String DateTime, String Action, String Amount, String DestAccount){
this.DateTime = DateTime;
this.Action = Action;
this.Amount = Amount;
this.DestAccount = DestAccount;
}
}
class Mylistadapter extends BaseAdapter{
transModel[] transModels;
public Mylistadapter (transModel[] transModels){
this.transModels = transModels;
}
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
View view1 = LayoutInflater.from(view.getContext()).inflate(R.layout.report_list,null);
……
return view1;
}
}
.
.
/////////////// Main program ///////////////////
result1 = “a#b#c#d * e#f#g#h * i#j#k#l”;
String[] items = result1.split(Pattern.quote("*"));
String[] items1;
transModel[] transModels = null;
transModel tt = new transModel("","","","");
for (String item : items) {
items1 = item.split(Pattern.quote("#"));
tt.DateTime = items1[0];
tt.Action = items1[1];
tt.Amount = items1[2];
tt.DestAccount = items1[3];
// transModels = new transModel[]{tt};
}
ListView lview = (ListView) view.findViewById(R.id.list_trans);
lview.setAdapter(new Mylistadapter(transModels));
/*
Static way :
transModel tmodel1 = new transModel(“a”,”b”,”c”,”d”);
transModel tmodel2 = new transModel(“e”,”f”,”g”,”h”);
transModel tmodel3 = new transModel(“i”,”j”,”k”,”l”);
transModel[] transModels = new transModel[]{tmodel1,tmodel2,tmodel3};
*/
解决方案
您错误地将项目添加到数组中。以下代码不正确:
String[] items = result1.split(Pattern.quote("*"));
String[] items1;
transModel[] transModels = null;
transModel tt = new transModel("","","","");
for (String item : items) {
items1 = item.split(Pattern.quote("#"));
tt.DateTime = items1[0];
tt.Action = items1[1];
tt.Amount = items1[2];
tt.DestAccount = items1[3];
// transModels = new transModel[]{tt};
}
首先,您永远不会使用以下方法初始化数组大小:
transModel[] transModels = null;
其次,您永远不会在 for each 循环中设置项目。
要解决此问题,您需要使用以下内容初始化数组的大小:
transModel[] transModels = new TransModel[10];
然后按位置将每个项目设置为它。
这里的示例代码:
String[] items = result1.split(Pattern.quote("*"));
// initialize the length of transModel by the length of items.
transModel[] transModels = new transMode[items.length];
// use traditional for loop so we can use the item index.
for (int i = 0; i < items.length; i++) {
transModel tt = new transModel("","","","");
String[] items1 = items[i].split(Pattern.quote("#"));
tt.DateTime = items1[0];
tt.Action = items1[1];
tt.Amount = items1[2];
tt.DestAccount = items1[3];
// set the transModel to the array with specific index.
transModels[i] = tt;
}
// now you have the array properly populated.
ListView lview = (ListView) view.findViewById(R.id.list_trans);
lview.setAdapter(new Mylistadapter(transModels));
推荐阅读
- matlab - MATLAB 中概率密度函数的 3D 图
- leaflet - Leaflet.js,标记不呈现
- reactjs - 如何使用 React 应用的 localhost 配置
- powershell - Powershel 和时间跨度
- pandas - ModuleNotFoundError:databricks 中没有名为“xlsxwriter”的模块
- python - 在Python中以模糊方式匹配一个数字
- reactjs - 我如何将反应数据发送到快递后端?
- python - 通过正则表达式替换字符串,同时排除带引号的字符串
- workbox - Workbox - 使用 setCatchHandler 时返回什么?
- angular - Ionic 5 Angular:iOs Simulator 中的 Google Maps InfoWindow 填充问题