android:外卖电话(listview+拨打电话)

实现,从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的响应方法的时候被调用到。

发布了71 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39131246/article/details/100550813