实现,从Bomb后端云获取数据到listview,触发item,拨打电话。
效果图:
FoodPhoneActivity.java
public class FoodPhoneActivity extends AppCompatActivity implements View.OnClickListener {
private ListView listView;
private List<Foodphone> datas = new ArrayList<>();
private FoodTeleAdapter mFoodTeleAdapter;
private ImageButton back_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_food_phone);
listView=(ListView)findViewById(R.id.food_tele);
back_btn=(ImageButton)findViewById(R.id.back_btn);
back_btn.setOnClickListener(this);
BmobQuery<Foodphone> bmobQuery = new BmobQuery<>();
bmobQuery.findObjects(new FindListener<Foodphone>() {
@Override
public void done(List<Foodphone> object, BmobException e) {
if (e == null) {
Log.i("log","查询成功"+object.size());
datas=object;
mFoodTeleAdapter=new FoodTeleAdapter(datas,FoodPhoneActivity.this);
listView.setAdapter(mFoodTeleAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Foodphone foodphone=datas.get(i);
String Sshoptele=foodphone.getShopphone();
Log.i("msg",Sshoptele);
toTelephone(Sshoptele);
}
});
} else {
Log.i("log","查询失败"+e.getMessage());
Toast.makeText(FoodPhoneActivity.this, "请检查网络是否连通", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.back_btn:
finish();
break;
}
}
private void toTelephone(String phoneNum) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNum));
startActivity(intent);
}
}
适配器
public class FoodTeleAdapter extends BaseAdapter {
private List<Foodphone> mFoodphoneList;
private LayoutInflater mLayoutInflater;
public FoodTeleAdapter(List<Foodphone> foodphones, Context context){
this.mFoodphoneList=foodphones;
this.mLayoutInflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return mFoodphoneList==null?0:mFoodphoneList.size();
}
@Override
public Object getItem(int i) {
return mFoodphoneList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//加载布局为一个视图
View view1=mLayoutInflater.inflate(R.layout.food_item,null);
Foodphone foodphone=mFoodphoneList.get(i);
TextView tshopname =(TextView)view1.findViewById(R.id.shopname);
TextView tshoptele =(TextView) view1.findViewById(R.id.shoptele);
tshopname.setText(foodphone.getShopname());
tshoptele.setText(foodphone.getShopphone());
return view1;
}
}
BaseAdapter
BaseAdapter是开发中最常用的适配器ArrayAdapter, SimpleAdapter 都继承于BaseAdapter。BaseAdapter可以完成自己定义的Adapter,可以将任何复杂组合的数据和资源,以任何你想要的显示效果展示给大家。
继承BaseAdapter之后,需要重写以下四个方法:getCount,getItem,getItemId,getView。
系统在绘制ListView之前,将会先调用getCount方法来获取Item的个数。每绘制一个Item就会调用一次getView方法,在getView中引用事先定义好的layout布局确定显示的效果并返回一个View对象作为一个Item显示出来。
这两个方法是自定ListView显示效果中最为重要的,同时只要重写好了这两个方法,ListView就能完全按开发者的要求显示。而getItem和getItemId方法将会在调用ListView的响应方法的时候被调用到。