请问在android开发中怎样将蓝牙搜索的设备放在ListView中呢?

安卓小白,现在在学习蓝牙方面知识,目前只了解将蓝牙搜索到的设备用TextView显示出来,那用ListView应该怎样显示呢?毕竟ListView中的Item我们对它进行... 安卓小白,现在在学习蓝牙方面知识,目前只了解将蓝牙搜索到的设备用TextView显示出来,那用ListView应该怎样显示呢?毕竟ListView中的Item我们对它进行选择,实用性更强。
我已经完成了使用TextView显示蓝牙搜索到设备的名称和地址的例子,那么在此基础上能换成ListView形式的吗???
展开
 我来答
披着夜色的狼
推荐于2018-05-07 · TA获得超过179个赞
知道小有建树答主
回答量:113
采纳率:50%
帮助的人:41.3万
展开全部

    我这边举个例子吧:


  1. 在布局中拖入一个ListView空间,假如id就叫listView1;

  2. 在layout文件夹中,新建一个布局xml文件,假如叫items,可以选择RelativeLayout布局;里面放一个TextView,假如id是textView1(该布局就是ListView每一行的布局);

  3. 下面的例子中,可以把容器中的String换成自定义的类:

  4. package com.example.test;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.BaseAdapter;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;

    public class MainActivity extends Activity {

    private ArrayList<String> btList = new ArrayList<String>(); // 用于保存获取到的蓝牙名称
    private MyAdapter mAdapter; // 适配器

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initData();
    initListView();

    // 若蓝牙列表数据更新后,可以用以下方法通知ListView更新显示
    mAdapter.notifyDataSetChanged();

    }

    /**
     * 初始化数据
     */
    private void initData() {
    // 假如在这里添加蓝牙设备到ArrayList

    // 假如列表中有数据,先清空
    btList.clear();

    for (int i = 0; i < 10; i++) {
    btList.add("蓝牙" + i);
    }

    }

    /**
     * 初始化ListView
     */
    private void initListView() {
    ListView listView = (ListView) findViewById(R.id.listView1);
    // 为ListView设置适配器
    mAdapter = new MyAdapter();
    listView.setAdapter(mAdapter);

    listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
    // 在这里对点击事件进行
    // position是当前点击的行;根据它可以获得容器中对应的值
    String btName = btList.get(position);
    Toast.makeText(MainActivity.this, "当前点击的是:" + btName,
    Toast.LENGTH_SHORT).show();
    }
    });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }

    class MyAdapter extends BaseAdapter {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    View inflate = getLayoutInflater().inflate(R.layout.item, null);
    TextView textView = (TextView) inflate.findViewById(R.id.textView1);// 查找item中的textView
    String btName = btList.get(position);
    textView.setText(btName);
    return inflate;
    }

    @Override
    public int getCount() {
    // 决定ListView的行数,这里设成容器内容数
    return btList.size();
    }

    @Override
    public Object getItem(int position) {
    return null;
    }

    @Override
    public long getItemId(int position) {
    return 0;
    }

    }

    }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式