带有两个按钮的Android列表视图

时间:2015-06-20 18:47:36

标签: android

我已经下载了一些代码并对其进行了修改。我想用list和unpair按钮在列表视图中显示所有绑定的蓝牙设备。 它现在工作正常。当我点击一个按钮时,我得到了行的编号,但我想在Toast中获取设备的名称。你能帮帮我吗?

public class MainActivity extends Activity implements AdapterView.OnItemClickListener, View.OnClickListener {

        private BluetoothAdapter mBtAdapter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ListView list = new ListView(this);
            setContentView(list);

            mBtAdapter = BluetoothAdapter.getDefaultAdapter();
            Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices();

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.row_button, R.id.text) {

                @Override
                public View getView(int position, View convertView, ViewGroup parent) {

                    View row =  super.getView(position, convertView, parent);

                    View left = row.findViewById(R.id.left);
                    left.setTag(position);
                    left.setOnClickListener(MainActivity.this);

                    View right = row.findViewById(R.id.right);
                    right.setTag(position);
                    right.setOnClickListener(MainActivity.this);

                    return row;
                }
            };

            list.setAdapter(adapter);
            list.setOnItemClickListener(this);

            if (pairedDevices.size() > 0) {

                   for(BluetoothDevice bt : pairedDevices)

                       adapter.add(bt.getName()+ "\n" + bt.getAddress());                          

                }

                else {

                       String noDevices = getResources().getText(R.string.none_paired).toString();
                       adapter.add(noDevices);

                }

        }

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch(v.getId()) {
            case R.id.left:  
                int pos = (Integer) v.getTag();
                Toast.makeText(this, "Left Accessory "+v.getTag(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.right:
                Toast.makeText(this, "Right Accessory "+v.getTag(), Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
            }

        }
        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(this, "Item Click "+position, Toast.LENGTH_SHORT).show();

        }

    }

1 个答案:

答案 0 :(得分:0)

未经测试,但我认为它应该可以使用

更改onItemClick中的代码:

Toast.makeText(this, "Item Click "+ adapter.getItem(poistion), Toast.LENGTH_SHORT).show();