ListView 有时显示值,有时不显示
我正在尝试制作一个使用 Bissection 方法来查找函数的近似根的应用程序。App进行计算并将结果显示在listView中,它在大多数情况下都可以正常工作,但经过一些测试,我发现某些函数的结果没有显示出来。
例如,从 1 到 3 的 x^3-9x+3 有效,但从 0 到 1 无效。
img http://i.stack.imgur.com/yvEzz.png
- 尝试调试并且两个输入都通过相同的代码行,一切似乎都很好。Logcat 中没有显示任何内容。
- ListView 正在工作,因为对于某些输入,它会显示值
- ArrayAdapter 的工作原理与 listView 相同,也是因为示例中的两个数组具有相似的双精度值。这应该不是问题
我错过了什么?
代码:
setListAdapter(new BisseccaoAdapter(a_array, b_array,
c_array, fc_array));
class BisseccaoAdapter extends BaseAdapter {
double[] a2, b2, c2, fc2;
BisseccaoAdapter() {
a2 = null;
b2 = null;
c2 = null;
fc2 = null;
}
public BisseccaoAdapter(double[] a_array, double[] b_array,
double[] c_array, double[] fc_array) {
a2 = a_array;
b2 = b_array;
c2 = c_array;
fc2 = fc_array;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderItem viewHolder;
if(convertView==null){
// inflate the layout
LayoutInflater inflater = getLayoutInflater();
convertView = inflater.inflate(R.layout.linha_listview, parent, false);
// set up the ViewHolder
viewHolder = new ViewHolderItem();
viewHolder.i = (TextView) convertView.findViewById(R.id.lista_i);
viewHolder.at = (TextView) convertView.findViewById(R.id.lista_a);
viewHolder.bt= (TextView) convertView.findViewById(R.id.lista_b);
viewHolder.ct = (TextView) convertView.findViewById(R.id.lista_c);
viewHolder.fct = (TextView) convertView.findViewById(R.id.lista_fc);
// store the holder with the view.
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolderItem) convertView.getTag();
}
// assign values if the object is not null
if(a2.length != 0) {
// get the TextView from the ViewHolder and then set the text (item name) and tag (item ID) values
viewHolder.i.setText(Integer.toString(position + 1));
viewHolder.at.setText(new DecimalFormat("#.#######").format(a2[position]));
viewHolder.bt.setText(new DecimalFormat("#.#######").format(b2[position]));
viewHolder.ct.setText(new DecimalFormat("#.########").format(c2[position]));
viewHolder.fct.setText(new DecimalFormat(".#######E0").format(fc2[position]));
}
return convertView;
}
@Override
public int getCount() {
for (i = 0; i < a2.length; i++) {
if (a2[i] == 0) {
break;
}
}
return i;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
}