Hae stackoverflow gurus、複数の値をsqliteデータベースから取得し、androidのlistviewに取り込みます。
私は援助を探しています。私はインターネット上ではなく無駄に研究してきました。私はlistviewにフェッチされたすべての値を追加したいと思います。私はデータベースに値を挿入することができて、それらのすべてをフェッチすることができましたが、リストビューに追加することはできません。 以下の関数は完璧に動作し、データをリストとして返します。
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhoneNumber(cursor.getString(2));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
// return contact list
return contactList;
}
また、以下の機能が完璧に動作し、出力したログ
}
private void showRecords() {
List<Contact> contacts = db.getAllContacts();
for (Contact cn : contacts) {
//lv.setAdapter(new dataAdapter(this, cn.getID(), cn.getName(), cn.getPhoneNumber()));
String log = "Id: " + cn.getID() + " ,Name: " + cn.getName() + " ,Phone: " + cn.getPhoneNumber();
// Writing Contacts to log
//Log.d("Name: ", log);
Toast.makeText(getApplicationContext(),log, Toast.LENGTH_SHORT).show();
}
}
を使用して取得したすべての値が今、私はしかし、作業しているため、リストビューを作成している、私はデータを追加することができませんよ表示されているようにリストビューに追加します。
private void showRecords() {
List<Contact> contacts = db.getAllContacts();
for(int i=0; i < contacts.size();i++){
lv.setAdapter(new dataAdapter(this, cn.getID(),cn.getName(), cn.getPhoneNumber()));
}
}
私の質問は、どのようにしてList<Contact> contacts = db.getAllContacts();
をlistview lvに埋め込むことができますか?
これは
public class dataAdapter extends BaseAdapter {
Context context;
String [] name;
String [] phone;
int [] dataId;
private static LayoutInflater inflater=null;
public dataAdapter(Context context, int[] dataId, String[] name, String[] phone){
this.context=context;
this.dataId=dataId;
this.name=name;
this.phone=phone;
inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return dataId.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public class Holder{
TextView nameV;
TextView phoneV;
}
public View getView(final int position, View convertView, ViewGroup parent){
Holder holder=new Holder();
View rowView;
rowView=inflater.inflate(R.layout.thelist, null);
holder.nameV=(TextView) rowView.findViewById(R.id.txt1);
holder.phoneV=(TextView) rowView.findViewById(R.id.txt2);
holder.nameV.setText(name[position]);
holder.phoneV.setText(phone[position]);
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,name[position],Toast.LENGTH_SHORT).show();
}
});
return rowView;
}
}
http://www.journaldev.com/10416/android-listview-with-custom-adapter-example-tutorialカスタムアダプタ –
のこのチュートリアルに従ってください。あなたの 'showRecords'メソッドが間違っています。レコードをループしたり、それぞれを設定したりすることはありません。あなたは 'List'でバックアップされたアダプタの_single instance_を作成し、それを設定してください_once_ –
Davidさん、私は完全に混乱しているので、私のためにそれをすることができます –