0
긴 클릭 부분에서 제거를 추가 한 후 같은 방법으로 호출 옵션을 추가하려고했지만 작동하지 않았습니다.arrayList에서 긴 클릭 제거
두 번째 상자에 코드를 작성하고 (첫 번째 상자는 호출 옵션이 변경되지 않고 작동하지 않음), // 기호로 시도한 변경 사항을 강조 표시했습니다.
이
코드입니다 :누구는있다}}
public static final int PICK_CONTACT = 1;
private ArrayList<String> contactList;
private ArrayAdapter<String> arrayAdapter;
// private ArrayList<Integer> contactList2;
// private ArrayAdapter<Integer> arrayAdapter2;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_work__contacts);
Button btnPickContact = (Button) findViewById(R.id.btnPickContact);
btnPickContact.setOnClickListener(new View.OnClickListener() {
public void onClick(View _view) {
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
});
//you may fill it here e.g. from your db
contactList=new ArrayList<String>();
// contactList2=new ArrayList<Integer>();
arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, contactList);
// arrayAdapter2 = new ArrayAdapter<Integer>(this,
// android.R.layout.simple_list_item_1, contactList2);
final ListView lv = (ListView) findViewById(R.id.ContactListView);
lv.setAdapter(arrayAdapter);
lv.setLongClickable(true);
lv.setClickable(true);
// final ListView lv2 = (ListView) findViewById(R.id.ContactListView);
// lv.setAdapter(arrayAdapter2);
// lv.setLongClickable(true);
// lv.setClickable(true);
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
arrayAdapter.notifyDataSetChanged();
arrayAdapter.remove(arrayAdapter.getItem(pos));
Log.v("long clicked","pos: " + pos);
return true;
}
});
// lv2.setOnItemClickListener(new OnItemClickListener() {
// public void onItemClick(AdapterView<?> parent, View view,
// int position, long id) {
//
//String url = "tel:"+position;
// Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
// startActivity(intent);
//
//}
//});
}
@SuppressWarnings("deprecation")
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case (PICK_CONTACT): {
if (resultCode == Activity.RESULT_OK) {
Uri contentUri = data.getData();
//Phone Name
Cursor c = managedQuery(contentUri, null, null, null, null);
c.moveToFirst();
String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
//Phone Number
String contactId = contentUri.getLastPathSegment();
Cursor cursor = getContentResolver().query(Phone.CONTENT_URI,
null, Phone._ID + "=?", new String[] { contactId },
null);// < - Note, not CONTACT_ID!
startManagingCursor(cursor);
Boolean numbersExist = cursor.moveToFirst();
int phoneNumberColumnIndex = cursor
.getColumnIndex(Phone.NUMBER);
String phoneNumber = "";
// Integer iInteger = new Integer(phoneNumberColumnIndex);
while (numbersExist) {
phoneNumber = cursor.getString(phoneNumberColumnIndex);
phoneNumber = phoneNumber.trim();
numbersExist = cursor.moveToNext();
}
stopManagingCursor(cursor);
//Set
arrayAdapter.add(name + " - " + phoneNumber);
arrayAdapter.notifyDataSetChanged();
// arrayAdapter2.add(iInteger);
// arrayAdapter2.notifyDataSetChanged();
}
break;
}
}
}
을
public static final int PICK_CONTACT = 1;
private ArrayList<String> contactList;
private ArrayAdapter<String> arrayAdapter;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_work__contacts);
Button btnPickContact = (Button) findViewById(R.id.btnPickContact);
btnPickContact.setOnClickListener(new View.OnClickListener() {
public void onClick(View _view) {
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
});
//you may fill it here e.g. from your db
contactList=new ArrayList<String>();
arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, contactList);
final ListView lv = (ListView) findViewById(R.id.ContactListView);
lv.setAdapter(arrayAdapter);
lv.setLongClickable(true);
lv.setClickable(true);
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
arrayAdapter.notifyDataSetChanged();
arrayAdapter.remove(arrayAdapter.getItem(pos));
}
@SuppressWarnings("deprecation")
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case (PICK_CONTACT): {
if (resultCode == Activity.RESULT_OK) {
Uri contentUri = data.getData();
//Phone Name
Cursor c = managedQuery(contentUri, null, null, null, null);
c.moveToFirst();
String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
//Phone Number
String contactId = contentUri.getLastPathSegment();
Cursor cursor = getContentResolver().query(Phone.CONTENT_URI,
null, Phone._ID + "=?", new String[] { contactId },
null);// < - Note, not CONTACT_ID!
startManagingCursor(cursor);
Boolean numbersExist = cursor.moveToFirst();
int phoneNumberColumnIndex = cursor
.getColumnIndex(Phone.NUMBER);
String phoneNumber = "";
while (numbersExist) {
phoneNumber = cursor.getString(phoneNumberColumnIndex);
phoneNumber = phoneNumber.trim();
numbersExist = cursor.moveToNext();
}
stopManagingCursor(cursor);
//Set
arrayAdapter.add(name + "-" + phoneNumber);
arrayAdapter.notifyDataSetChanged();
}
break;
}
}
} 을 (당신이 원한다면 내가 긴 클릭 제거를 만드는 나의 시도를 추가합니다) 왜 작동하지 않는지?
는
이 게시물 확인 : http://stackoverflow.com/questions/8846707/how-to-implement-a-long-click-listener-on-a-listview. onLongClickListener 안에는 삭제 버튼이있는 대화 상자를 만들 수 있으며, 이미 위치를 알고 있기 때문에 arraylist에서 제거 할 수 있습니다. 그런 다음 어댑터에서 notifyDataChange를 호출하십시오. –
고맙습니다. 또한 listview에서 클릭 한 번호로 전화를 걸려면 메서드가 필요합니다. 동일한 방법으로이 작업을 수행 할 수 있습니까? 다른 활동을 만들어야합니까? – Noam
길게 누르거나 보통 클릭에 따라 listView.onItemClickListener()를 설정 한 다음 위치 번호 ( –