ListViewに連絡先の名前のリストを表示したいプロジェクトを行っています。名前はローカルのsqlidbから取得されます。これまでのところ、標準のArrayAdapterクラスを使用して名前を取得し、表示することができました。
ただし、より詳細に制御するために、各行に制御ボタンも表示できるように独自のアダプターを作成しようとしています。私はこのコードについて混乱しています:
private void fillData() {
Cursor mContactsCursor = mDbAdapter.getAllContacts();
startManagingCursor(mContactsCursor);
String [] from = new String[] {ContactsDbAdapter.COLUMN_FNAME, ContactsDbAdapter.COLUMN_LNAME};
int [] to = new int [] { R.id.fname, R.id.lname};
//What variables should constructor take?
adapter = new ContactsListAdapter(this, from, to);
data.setAdapter(adapter);
}
基本的に、これらの値をコンストラクターに渡す方法がわかりません。
String [] from = new String[] {ContactsDbAdapter.COLUMN_FNAME, ContactsDbAdapter.COLUMN_LNAME};
int [] to = new int [] { R.id.fname, R.id.lname};
これは私のContactsListAdapterクラスです:
public class ContactsListAdapter extends ArrayAdapter<Contact> {
private List<Contact> contacts;
private Button deleteBtn;
private Button editBtn;
private TextView name;
public ContactsListAdapter(Context context,List<Contact> contacts) {
super(context, R.layout.contact_row, contacts);
this.contacts = contacts;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.contact_row, null);
}
//assign values to the view
final Contact c = this.contacts.get(position);
//add listeners to buttons
deleteBtn = (Button)v.findViewById(R.id.deleteBtn);
deleteBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Deleted", Toast.LENGTH_SHORT).show();
}
});
editBtn = (Button)v.findViewById(R.id.editBtn);
editBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Edit", Toast.LENGTH_SHORT).show();
}
});
//insert name into the text view
name = (TextView)v.findViewById(R.id.name);
name.setText(c.getName());
return v;
}
}
このクラスのコードは、ハードコードされた配列からデータを取得するカスタムリストアダプターを使用した例から取得したため、データベースからデータを取得する際に何かが足りない可能性があります。
どんなアドバイスも大歓迎です。どうもありがとう。