마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ListView의 OnGestureListener이벤트에 대해 질문드립니다.

0 추천

이번에 앱을 하나 개발하고 있습니다.

리스트화면에서 제스처를 넣어서 왼쪽에서 튀어나오는 메뉴를 구현하려하는데요.

Activity에다가 OnGestureListener이벤트를 추가했는데..

리스트위에서는 작동하지 않고 리스트에 추가한 setOnClickListener도 제대로 작동하지 않습니다.

어떻게 해야할지 궁금합니다.

소스는 아래와 같이 구성했는데요. 어떻게해야 두개가 다 제대로 동작할까요?

 

public class BusinessListActivity extends Activity implements OnClickListener, OnGestureListener {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView (R.layout.activity_businesslist);

gestureScanner = new GestureDetector(this);
}
@Override
public void onClick(View v){
switch(v.getid()){
case R.id.xxx:
break;
}
private class JsonLoadTask extends AsyncTask<String, Void, String>{
  @Override
  protected String doInBackground(String...strs){
   Log.d(TAG, "doInBackground");
   return getBusinessLogList();
  }
  @Override
  protected void onPostExecute(String result){
   Log.d(TAG, "onPostExecute" + result);
   if (result.equals("Y")){
    ListAdapter la = new ListAdapter();
    businesslist.setAdapter(la);
   }else{
    //데이터가 없을때의 처리
   }
  }
 }
 //Project의 리스트를 가져온다.
 public String getBusinessLogList(){
  StringBuffer sb = new StringBuffer();
  String m_code = prefs.getString("M_Code", "");
  }catch(JSONException ex){
   ex.printStackTrace();
  }catch(Exception e){
   e.printStackTrace();
  }
  return sb.toString();
 }
 //List용 Adapter
 class ListAdapter extends BaseAdapter{
  public ListAdapter(){
   this.notifyDataSetChanged();
  }
  @Override
  public int getCount() {
   return jarray.length();
  }
  @Override
  public Object getItem(int position) {
   return null;
  }
  @Override
  public long getItemId(int position) {
   return position;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View row = inflater.inflate(R.layout.businesslist_row, null);
   TextView businessdate = (TextView)row.findViewById(R.id.bglist_date1);
   ImageButton businessStat = (ImageButton)row.findViewById(R.id.bglist_btn1);
   try{
    businessdate.setText(jarray.getJSONObject(position).getString("R_Date"));
    String R_App1 = jarray.getJSONObject(position).getString("R_Approval1");
    String R_App2 = jarray.getJSONObject(position).getString("R_Approval2");  
   }catch(Exception e){
    Log.d(TAG, "GETVIEW EXP " + e.getMessage());
   }
   return row;
  }
 }
private class listItemClickListener implements OnItemClickListener
    {
        public void onItemClick(AdapterView<?> parentView, View clickedView, int position, long id)
        {
         try{
         String dkey = jarray.getJSONObject(position).getString("Seqno");
          Intent i = new Intent(ctx, BusinessInsertActivity.class);
          i.putExtra("dKey", dkey);
          i.putExtra("MODE", "U");
          startActivity(i);
         }catch(Exception e){
          e.printStackTrace();
         }        
        }
    }
@Override
    public boolean onTouchEvent(MotionEvent me) {
        gestureScanner.onTouchEvent(me);
        return super.onTouchEvent(me);
    }
 @Override
 public boolean onDown(MotionEvent e) {
 return false;
 }
 @Override
 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  aniShow = AnimationUtils.loadAnimation(ctx, R.anim.padein);
  aniHide = AnimationUtils.loadAnimation(ctx, R.anim.padeout);
  try {
            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                return false;
            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                Log.d(TAG, "Gone");
    menulayout.setVisibility(View.GONE);
    menulayout.setAnimation(aniHide);
            }
            else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
    Log.d(TAG, "Visible");
    menulayout.setVisibility(View.VISIBLE);
    menulayout.setAnimation(aniShow);
            }
        } catch (Exception e) {
        }
        return true;
 }
 @Override
 public void onLongPress(MotionEvent e) {
 }
 @Override
 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
   float distanceY) {
  return false;
 }
 @Override
 public void onShowPress(MotionEvent e) {
 }
 @Override
 public boolean onSingleTapUp(MotionEvent e) {
 return false;
 }
}

 

서리 (140 포인트) 님이 2013년 3월 15일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...