如果在arraylist中没有要显示的坐标,如何处理错误?

时间:2014-02-14 11:38:36

标签: java android arraylist maps

我需要你的帮助,当数组列表中没有要显示的坐标时,如何处理Get Coordinate按钮中的错误?

这是我的代码:

AlertDialog.Builder mAlert = new AlertDialog.Builder(Hotel.this);

view = getLayoutInflater().inflate(R.layout.alert_background, null);
ImageView Content_img = (ImageView)view.findViewById(R.id.imageView1);
TextView Content_txt1 = (TextView)view.findViewById(R.id.textView1);

Content_img.setImageResource(item_detail.get(position).getImageNumber());
Content_txt1.setText(item_detail.get(position).getName());

mAlert.setTitle(item_detail.get(position).getName()).
setView(view).
setPositiveButton("Get Coordinate", new DialogInterface.OnClickListener()
{

     @Override
     public void onClick(DialogInterface dialog, int which) 
     {
           dialog.dismiss();
           Intent intent = new Intent(Hotel.this, MapsActivity.class);
           intent.putExtra("lon", item_detail.get(position).lon);
           intent.putExtra("lat", item_detail.get(position).lat);
           Hotel.this.startActivity(intent);
     }

}).create().show();

这是我的arraylist,其中一个数组有坐标,另一个没有:

private ArrayList<ItemDetail> GetSearchResult() 
{
  ArrayList<ItemDetail> result = new ArrayList<ItemDetail>();

  ItemDetail item_detail = new ItemDetail();
  item_detail.setName("Taman Sari");
  item_detail.setImageNumber(images[0]);
  item_detail.ALoc(-6.917222222, 106.9758333);
  result.add(item_detail);

  item_detail = new ItemDetail();
  item_detail.setName("Taman Tirta");
  item_detail.setImageNumber(images[1]);
  result.add(item_detail);


  return result;
}

3 个答案:

答案 0 :(得分:1)

您可以先尝试获取lonlat,然后检查null。{如果它们是null,则可以显示Toast错误。

    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
        Intent intent = new Intent(Hotel.this, MapsActivity.class);
        Object lan = item_detail.get(position).lon;
        Object lat = item_detail.get(position).lat;
        if (lan == null || lat == null){
            //show toast
        } else {
            intent.putExtra("lon", lon);
            intent.putExtra("lat", lat);
            Hotel.this.startActivity(intent);
        }
    }

答案 1 :(得分:0)

您基本上有两种可能性:确保每个ItemDetail都设置了参数,这样您就可以通过显示每个ItemDetail来依赖它,或者通过不显示任何内容和错误消息或可能的内容来执行错误处理

答案 2 :(得分:0)

解决方案1:     设置参数的默认值,这样您在从对象获取值时无需检查null。如果未提供新值,则将使用旧值。

class ItemDetail{

type param1 = value1; // some default value say 21
type param2 = value2; // some default value say 43
public void ALoc(type param1, type param2){

}

}

解决方案2:

 onclick(onclick-param){

  type value = item_detail.get(position).lon;
  if(value == null){
     // no value supplied.
   }else{
    // value supplied
   }
}