0
확장 가능한 목록을 만들고 슬라이더처럼 동작하는 gesturedetector를 설정했습니다. (슬라이더를 움직일 때마다 표시하고 숨 깁니다.)expandableListView에서 onTouchEventListteners를 적절하게 관리합니다.
expListListener= new GestureDetector.SimpleOnGestureListener(){
@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
expandableListView.invalidateViews();
Thread closeSliderThread = new Thread(new closingSlider());
Thread openingSliderThread = new Thread(new openingSlider());
if (e1.getX() - e2.getX() < 0 && Math.abs(e2.getX() - e1.getX()) > difference) {
closeSliderThread.start();
for (int i = 0; i < expandableListView.getCount(); i++) expandableListView.collapseGroup(i);
return true;
}
if (e2.getX() - e1.getX() > 0
&& Math.abs(e1.getX() - e2.getX()) > difference)
{
openingSliderThread.start();
return true;
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
class closingSlider implements Runnable{
@Override
public void run() {
rightPartLL.post(new Runnable() {
@Override
public void run() {
synchronized (closingSlider.class) {
rightPartLL.startAnimation(hide_slider);
}
}
});
}
}
class openingSlider implements Runnable{
@Override
public void run() {
rightPartLL.post(new Runnable() {
@Override
public void run() {
synchronized (openingSlider.class) {
rightPartLL.startAnimation(show_slider);
}
}
});
}
}
는 여기에
gestureDetectorOfExpListView = new GestureDetector(activity,expListListener);
난 내 날뛰는 행동 수신 할 expanableList 알려주기 :
expandableListView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return gestureDetectorOfExpListView.onTouchEvent(motionEvent);
}
});enter code here
을하지만 난이 시도 할 때 긴 터치 후 로직을 구현하기 위해에 OnItemLongListener을 설정 ExpandableList 하위 노드 :
expandableListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
int groupPosition = ExpandableListView.getPackedPositionGroup(id);
int childPosition = ExpandableListView.getPackedPositionChild(id);
Toast.makeText(activity,"group: "+groupPosition +" child:"+childPosition,5000).show();
// Return true as we are handling the event.
return true;
}
return false;
}
});
enter code here
... 그리고 난 다음 라인을 삭제할 때 내가
OnTouchEvent to expandableListView which return return gestureDetectorOfExpListView.onTouchEvent(motionEvent);
를 설정 곳은 일이나를 어쩌려 구`t는 .... OnItemLongClickListener
제대로 작동! 제스처 동작과 onLongTouches
을 구현하는 방법을 이해할 수있게 도와주세요. 도움을 주셔서 감사합니다.
xpandableListView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return gestureDetectorOfExpListView.onTouchEvent(motionEvent) | expandableListView.onTouchEvent(motionEvent);
}
});enter code here
: