2013-05-27 2 views
0

안녕하세요 저는 ListView와 함께 두 가지 작업을 수행 할 수 있습니다. 두 번째 작업을 먼저 호출 할 수 있지만 두 번째 작업을 닫고 첫 번째 작업으로 돌아 가면 OnItemClick이 작동하지 않습니다. 문제 및 그것을 해결하는 방법? I가 닫기위한 버튼을 다시 사용하여 제 액티비티두 작업을 사용할 때 OnItemClick이 작동하지 않습니다.

private OnTouchListener listViewTouchListener =new OnTouchListener() { 
    float startX,endX; 
    boolean isMove=false; 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     int action=event.getAction(); 
     switch(action){ 

     case MotionEvent.ACTION_DOWN: 
      startX=event.getX(); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      isMove=true; 
      break; 
     case MotionEvent.ACTION_UP: 
      endX=event.getX(); 
      if(isMove==true && startX<endX){ 
       Rect rect=new Rect();   
       int endY=(int)event.getY(); 
       for(int i=0;i<list.getChildCount();i++){ 
        View child=list.getChildAt(i); 
        int left=child.getLeft(); 
        int right=child.getRight(); 
        int bottom=child.getBottom(); 
        int top=child.getTop(); 
        rect.set(left, top, right, bottom); 
        if(rect.contains((int)endX,endY)){ 
         Intent intent=new Intent(AddWordsActivity.this,AddTranslateActivity.class); 
         int id=words.get(i).getId(); 
         intent.putExtra(Names.WORD_ID,id); 
         startActivity(intent); 
         break; 
        } 
       } 
      } 
      /* 
      endX=event.getX(); 
      if(startX<endX){ 
       isMove=true; 

      }*/ 
      break; 

     } 
     isLongClick=!isMove; 
     return isMove; 
    } 
}; 

:

제 활성에서 onCreate

 @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.add_words_activity); 
    list=(ListView) findViewById(R.id.add_words_list); 
    getClassData(); 
    wordItems=new ArrayList<WordItem>(); 
    adapter=new AddWordsAdapter(this, wordItems); 
    list.setAdapter(adapter); 

    list.setOnItemClickListener(itemClick); 

    list.setOnTouchListener(listViewTouchListener); 

} 

제 활성은 터치에

  private OnItemClickListener itemClick=new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, 
      long id) { 
     isEditWordDilaog=true; 
     start=words.get(position); 
     Log.d(start.getWord(),"what the fuck"); 
     end=new WordData(); 
     final int langId=start.getLanguageId(); 
     end.setLanguageId(langId); 
     showDialog(WORD_DIALOG); 
     wordViewHolder.language.setImageResource(RProvider. 
       getLangImageId(languages.get(langId))); 
     wordViewHolder.word.setText(start.getWord()); 
     wordIndex=position; 

    } 

}; 

제 활성 인 itemClick. 이후 itemClick 작동하지 않습니다

+0

코드를 게시하면 모양을 볼 수 있습니다. – Tushar

+0

실제로 오류를 찾을 수 있거나 적어도 도움을 줄 수 있도록 여기에 코드를 게시해야합니다. 그렇지 않은 경우이 질문은 곧 닫힙니다. – hcpl

답변

0

나는 OnTouchListener이 필요하다고 생각하지 않습니다. Intent을 시작하는 것 외에는 다른 작업을하지 않는 한. OnClickListener은 일부 변수 만 설정하는 것으로 보이며 Intent을 시작하는 방법이 아닙니다. 나는 OnTouchListener를 제거하고 OnClickListener 내부에이를 배치 할

public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id) 

Added in API level 1 
Callback method to be invoked when an item in this AdapterView has been clicked. 

Implementers can call getItemAtPosition(position) if they need to access the data associated with the selected item. 

Parameters 
parent  The AdapterView where the click happened. 
view  The view within the AdapterView that was clicked (this will be a view provided by the adapter) 
position The position of the view in the adapter. 
id   The row id of the item that was clicked. 

:

Intent intent = new Intent(AddWordsActivity.this,AddTranslateActivity.class); 
int id = words.get(position).getId(); 
intent.putExtra(Names.WORD_ID,id); 
startActivity(intent); 

당신은 OnClickListener에 의해 주어진 id으로 전체 int id 변수를 대체 할 수있을 수 있지만 안드로이드 개발자 문서에서 귀하의 words 변수가 무엇인지 모른 채, 나는 확실히 말할 수 없습니다.

선언을 OnClickListener에 추가하면 항목을 클릭 할 때마다 Intent이 시작됩니다. 거기에서 추가 기능을 추가하면 완료됩니다.

행운을 빈다. 나는 이것이 도움이되기를 바란다.

관련 문제