-1
私は単純なリストビューをやっています。私は連絡先の名前をロードしたいと思います。リストビューのアイテムをクリックすると、私は背景の色を青にしたいです。しかし、私は3つの問題があります。私のカーソルはリストビューに正しく読み込まれません。繰り返す第二の問題は、リストビュー内の項目をクリックすると、リストビューは1つ以上の項目をペイントしています.3つ目は:最後の項目をクリックするとプログラムが例外を受け取ります。リストビューに名前を正しくロードするにはどうすればいいですか?カーソルがリストビューに正しくロードされていませんか?
public class display extends AppCompatActivity {
ListView lv ;
Button select;
String phoneNumber;
ArrayList <String> aa= new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView)findViewById(R.id.lv);
select = (Button) findViewById(R.id.button1);
getNumber(this.getContentResolver());}
public void getNumber(ContentResolver contentResolver) {
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println(".................."+phoneNumber);
aa.add(name);
}
phones.close();// close cursor
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_selectable_list_item,aa);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
parent.getChildAt(position).setBackgroundColor(Color.BLUE);
}
});
}
}
マイレイアウトファイル:
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/button1" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Select" />
</RelativeLayout>