2013-09-05 3 views
1

Я работаю над простым приложением Bluetooth для Android, и у меня есть ListActivity, который отображает все обнаруженное устройство.Как переопределить поведение ListAddter?

Так что у меня ListAdapter так:

deviceNameListAdapter = new ArrayAdapter<BluetoothDevice>(this,android.R.layout.simple_list_item_1,devices); 

и устанавливается для отображения.

Однако ListActivity отображает адрес устройства вместо имени устройства. Я предполагаю, что ListActivity вызовет элемент в методе .toString() устройств, когда он отобразит список устройств. Я просто думаю, что я могу изменить это поведение? Класс BluetoothDevice имеет метод, называемый .getName(), что и должно быть вызвано.

Cheers!

+0

Используйте BaseAdapter, таким образом ожно управлять все так, как вы хотите –

+0

@ Yume117 Так что я должен придумать мой собственный адаптер, расширив его и внедряя метод getView()? – dorafmon

+0

@dorafmon да. – danijoo

ответ

0

Exemple переходники класса:

public class AdapterClass extends BaseAdapter { 


    private List _list; 

    public AdapterDirectories(List list){ 
      // Constructor with good parameters 
      _list = list; 
    } 

    @Override 
    public int getCount() { 

     return _list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 

     return position; 
    } 

    @Override 
    public long getItemId(int position) { 

     return position; 
    } 


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

     View view = convertView; 
     CellHolder cellHolder = null; 
     // get 
     if (convertView == null) { 
      view = _inflater.inflate(R.layout.list_item, null); 
      cellHolder = new CellHolder(); 
      cellHolder.textTitle = (TextView) view.findViewById(R.id.text_view_title); 
      view.setTag(cellHolder); 
     } 
     else { 
      cellHolder = (CellHolder) convertView.getTag(); 
     } 
     // set 
     cellHolder.textTitle.setText(""); 
     return view; 
    } 

    public class CellHolder { 
     public TextView  textTitle; 
    } 
} 

установки адаптера в виде списка:

_listView.setAdapter(_adapter); 
Смежные вопросы