OnLongClickListener
내 목록보기에 추가 하고 싶습니다. 사용자가 목록에서 항목을 길게 누를 때마다 몇 가지 작업을 수행해야하지만 코드 에서이 리스너를 잡지 않습니다. 내가 잘못 가고있는 곳을 알려주십시오. 비슷한 코드가 setOnItemClickListener
잘 작동 합니다.
코드는 다음과 같습니다.
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
// TODO Auto-generated method stub
Log.d("in onLongClick");
String str=listView.getItemAtPosition(index).toString();
Log.d("long click : " +str);
return true;
}
});
답변
ListView에서 setOnItemLongClickListener () 를 설정해야합니다 .
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
// TODO Auto-generated method stub
Log.v("long clicked","pos: " + pos);
return true;
}
});
목록의 각 항목에 대한 XML (사용자 지정 XML을 사용해야 함)도 있어야합니다 android:longClickable="true"
(또는 편리한 방법을 사용할 수 있음 lv.setLongClickable(true);
). 이렇게하면 longclick에 응답하는 일부 항목 만있는 목록을 만들 수 있습니다.
이것이 도움이되기를 바랍니다.
답변
ListView 행 항목이 별도의 XML 파일을 참조하는 경우 ListView android:longClickable="true"
설정 외에 해당 레이아웃 파일에 추가해야합니다 setOnItemLongClickListener()
.
답변
또는이 코드를 사용해보십시오 :
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
Toast.makeText(list.this,myList.getItemAtPosition(index).toString(), Toast.LENGTH_LONG).show();
return false;
}
});
답변
위의 코드는 개별 항목이 아닌 목록보기를 LongClicking에서 작동한다고 생각합니다.
왜 사용하지 마십시오 registerForContextMenu(listView)
. 그런 다음 OnCreateContextMenu에서 콜백을 가져옵니다.
대부분의 사용 사례에서 이것은 동일하게 작동합니다.
답변
XML에서 추가
<ListView android:longClickable="true">
자바 파일에서
lv.setLongClickable(true)
이 setOnItemLongClickListener ()를 시도하십시오
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int pos, long l) {
//final String category = "Position at : "+pos;
final String category = ((TextView) view.findViewById(R.id.textView)).getText().toString();
Toast.makeText(getActivity(),""+category,Toast.LENGTH_LONG).show();
args = new Bundle();
args.putString("category", category);
return false;
}
});
답변
이 작동합니다
ListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
// TODO Auto-generated method stub
Toast.makeText(getContext(), "long clicked, "+"pos: " + pos, Toast.LENGTH_LONG).show();
return true;
}
});
또한 XML에서 잊지 말고 android:longClickable="true"
사용자 정의보기가있는 경우 사용자 정의보기 클래스에 추가하십시오.youCustomView.setLongClickable(true);
답변
나는이 답변의 대부분을 시도했고 자동 링크가 활성화되었지만 동일한 위치에서 긴 프레스를 사용해야하는 TextViews에서 모두 실패했습니다!
작동하는 사용자 정의 클래스를 만들었습니다.
public class TextViewLinkLongPressUrl extends TextView {
private boolean isLongClick = false;
public TextViewLinkLongPressUrl(Context context) {
super(context);
}
public TextViewLinkLongPressUrl(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TextViewLinkLongPressUrl(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text, type);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP && isLongClick) {
isLongClick = false;
return false;
}
if (event.getAction() == MotionEvent.ACTION_UP) {
isLongClick = false;
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
isLongClick = false;
}
return super.onTouchEvent(event);
}
@Override
public boolean performLongClick() {
isLongClick = true;
return super.performLongClick();
}
}