我有一个奇怪的问题。
我实现了GridView和Custom ArrayAdapter。现在我试图检查getView()部分中的两个值。如果它们相同,我将可见性设置为GONE。如果我这样做,价值没有在屏幕上正确显示我只得到Rs。没有数字,但日志显示正确。这可能是什么问题?
相反,如果我使用SetVisibilty Invisibile值正确显示。
为什么会这样?
这是我的getView代码:
@Override
public View getView(int position, View convertView, final ViewGroup parent)
{
ViewHolder holder = null;
if (convertView == null)
{
convertView = vi.inflate(R.layout.new_product_gridlist_items, null);
holder = new ViewHolder();
holder.productName = (TextView) convertView.findViewById(R.id.item_label);
holder.image = (ImageView) convertView.findViewById(R.id.item_image);
holder.oldamount = (TextView) convertView.findViewById(R.id.item_old_amount);
holder.newamount = (TextView) convertView.findViewById(R.id.item_new_amount);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
ProductDetails pd = productList.get(position);
holder.productName.setText(pd.getName());
oldValue = pd.getoldprice();
newValue = pd.getnewprice();
if (oldValue.equalsIgnoreCase(newValue))
{
holder.oldamount.setVisibility(View.GONE);
newFormatAmount = NumberFormat.getCurrencyInstance(new Locale("en", "IN")).format(Double.valueOf(pd.getnewprice()));
holder.newamount.setText(newFormatAmount);
}
else
{
holder.oldamount.setVisibility(View.VISIBLE);
oldFormatAmount = NumberFormat.getCurrencyInstance(new Locale("en", "IN")).format(Double.valueOf(pd.getoldprice()));
holder.oldamount.setPaintFlags(holder.oldamount.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
holder.oldamount.setText(oldFormatAmount);
newFormatAmount = NumberFormat.getCurrencyInstance(new Locale("en", "IN")).format(Double.valueOf(pd.getnewprice()));
holder.newamount.setText(newFormatAmount);
}
Picasso.with(getContext().getApplicationContext()).load(pd.getImage()).placeholder(R.drawable.none).error(R.drawable.none).into(holder.image);
return convertView;
}
从上面的代码中可以看出,如果oldValue和NewValue相同,则说:140.0
转换为numberFormat后,我得到一个日志为Rs。 140.根据条件我设置oldValue可见,我只得到Rs。而不是卢比。 140(Log is perfect)同样的方法如果我将oldValue设置为隐藏现在我可以根据日志正确打印值...
为什么在日志中可以显示该值时,该值无法在屏幕上正确显示?