0
連絡先を読み、名前と番号を取得してlistViewに入れるコードがあります。すべてが機能しますが、アプリケーションはすべての連絡先を同じ瞬間に読み込みます。私はスクロール移動でそれらを読まなければならないと思いますが、私は今、どのように助けてくださいませんか? ありがとう、Wolf。ここでlistViewの連絡先を読み込むための最適化?
は私のコードです:
のArrayList>当館=新しいArrayListを>();
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if(cur.getCount() > 0){
while(cur.moveToNext()){
id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
if(Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0){
final Cursor numCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
for(numCur.moveToFirst(); !numCur.isAfterLast(); numCur.moveToNext()){
brTel = numCur.getString(numCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
ime = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
tmpIme = new String[] {ime};
for(int i = 0; i < tmpIme.length; i++){
HashMap<String, String> imeMapa = new HashMap<String, String>();
imeMapa.put("imeLista", ime);
imeMapa.put("Mobilni", brTel);
mapa.add(imeMapa);
}
}
numCur.close();
}
} // While
}
SimpleAdapter sa = new SimpleAdapter(getApplicationContext(), mapa, R.layout.imenik, new String[] {"imeLista", "Mobilni"}, new int[] {R.id.tvImeImenik, R.id.tvSamoProba});
lImenik.setAdapter(sa);
事は、私は700人の連絡先のようなものを持って自分の携帯電話上のアプリケーションを試した後、私は15秒を待たなければならない、そして私は、ListViewコントロール内のすべての連絡先を取得することです。 – Wolf87
可能であれば速く進めたいですか? – Wolf87
あなたのコードは必要でない何かをしています:連絡先を地図にコピーします。あなたは直接カーソルを使用することができます – kingston