Я пытаюсь получить один элемент из фрагмента списка, если долгое нажатие обнаружено с помощью контекстного меню. дело в том, что элемент, который он получает, является первым элементом в списке, а не выбранным, то есть ...
если мой список выглядел так
item 5
item 4
item 3
item 2
item 1
и я долго нажимаю на item 2
это даст мне item 5
@Override
public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(Menu.NONE,Menu.NONE,Menu.NONE,"Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Vibrator vibrator = (Vibrator)getActivity().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(new long [] {0,20,0,0}, -1);
TextView tv = (TextView)getActivity().findViewById(R.id.bListTextView);
name = tv.getText().toString();
Log.d("List", name);
Cursor cID = getActivity().getContentResolver().query(BowlersDB.CONTENT_URI,new String[] {BowlersDB.ID,BowlersDB.NAME},BowlersDB.NAME + "=" + name,null,null);
String nameID = cID.getString(1);
getActivity().getContentResolver().delete(BowlersDB.CONTENT_URI,"_id" + "=" + nameID,null);
return super.onContextItemSelected(item);
}
XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/bListTextView"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Large Text"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="30dp" />
</RelativeLayout>
в виде списка я обычно просто получаю текстовое представление по id, как это
mContactList = (ListView) findViewById(R.id.contactList);
mContactList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0,View arg1,int arg2,long arg3) {
Vibrator v = (Vibrator)getSystemService(VIBRATOR_SERVICE);
v.vibrate(new long [] {0,20,0,0}, -1);
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(Contacts.this);
SharedPreferences.Editor edit = pref.edit();
TextView tv =(TextView)arg1.findViewById(R.id.contactEntryText);
n = tv.getText().toString();
edit.putString(SmsPrefs.NAME, n).commit();
showDialog(1);
return false;
}
});
но этот метод здесь не работает