请问在android开发中怎样将蓝牙搜索的设备放在ListView中呢?
安卓小白,现在在学习蓝牙方面知识,目前只了解将蓝牙搜索到的设备用TextView显示出来,那用ListView应该怎样显示呢?毕竟ListView中的Item我们对它进行...
安卓小白,现在在学习蓝牙方面知识,目前只了解将蓝牙搜索到的设备用TextView显示出来,那用ListView应该怎样显示呢?毕竟ListView中的Item我们对它进行选择,实用性更强。
我已经完成了使用TextView显示蓝牙搜索到设备的名称和地址的例子,那么在此基础上能换成ListView形式的吗??? 展开
我已经完成了使用TextView显示蓝牙搜索到设备的名称和地址的例子,那么在此基础上能换成ListView形式的吗??? 展开
1个回答
展开全部
我这边举个例子吧:
在布局中拖入一个ListView空间,假如id就叫listView1;
在layout文件夹中,新建一个布局xml文件,假如叫items,可以选择RelativeLayout布局;里面放一个TextView,假如id是textView1(该布局就是ListView每一行的布局);
下面的例子中,可以把容器中的String换成自定义的类:
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;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询