2014-02-19 2 views
0

나는 OnItemClickListener을 사용하는 나의 활동에 두 개의 ListViews을 가지고 있습니다. 어떤 ListViews 요소를 지금 확인할 수 있습니까? 이 코드를 사용했습니다 :안드로이드 식별리스트 onItemClick listener를 사용하여보기

@Override 
public void onItemClick(AdapterView<?> list, View view, int position, 
     long id) { 


    if (view.getId() == R.id.listDictionary) { 
    // TODO Auto-generated method stub 


    Intent intent = new Intent(MainActivity.this, WordActivity.class); 
    DictionaryListElement ele = (DictionaryListElement) dictionaryList 
      .getAdapter().getItem(position); 
    intent.putExtra("word", ele.getWord()); 

    startActivity(intent); 
    } else if (view.getId() == R.id.listFavourites) { 
     Intent intent = new Intent(MainActivity.this, WordActivity.class); 
     String ele = (String)favouritesList.getAdapter().getItem(position); 
     intent.putExtra("word", ele); 
     startActivity(intent); 

    } 
} 

그러나 작동하지 않습니다. 나는 각 눌려진 요소의 ID를 얻지 못한다고 생각한다. ListViews

+1

는 위의 코드에서 무슨 일입니까? – Raghunandan

+0

view.getId()가 아닌 목록보기 ID를 사용해보십시오 – Abx

답변

1

당신은 ListView의 ID를 (여기 ListViewonItemClick()-AdapterView로 전달)를 사용한다,하지이 ViewView의 ID는 ListView 항목입니다.

if(list.getId() == R.id.listDictionary) { 
    // item in dictionary list is clicked 
} else if (list.getId() == R.id.listFavourites) { 
    // item in favourite list is clicked 
} 
+0

과 같이 복잡해졌습니다. 왜이 질문은 질문하고, 왜 코드가 작동하지 않으며, 당신의 대답이 완전히 정확하다는 것을 이해합니다. 그러나 왜 그런 지저분한 논리를 계속 사용하도록 권장하는지 이해할 수 없습니다. –

+0

@AlexanderGavrilov 왜이 코드가 지저분하다고 생각하니? 하지만 나를 위해, 그것은 코드 재사용과 최소한의 코드이며 적절한 문서화 된 코드는 결코 지저분하지 않습니다 ... –

+0

나는 단지 지금 LOL을 목록 prameter에 주목했습니다. –

1

ifs와 논리를 구별하려면 왜 동일한 청취자가 필요 하겠는가? 각 뷰에 대해 별도의 리스너를 만듭니다. 그것은 더 깨끗한 코드 일뿐만 아니라 잘 작동해야합니다.

// dictionary listener 
@Override 
public void onItemClick(AdapterView<?> list, View view, int position, 
     long id) { 
    Intent intent = new Intent(MainActivity.this, WordActivity.class); 
    DictionaryListElement ele = (DictionaryListElement) dictionaryList 
      .getAdapter().getItem(position); 
    intent.putExtra("word", ele.getWord()); 

    startActivity(intent); 
} 

// favorites listener 
    @Override 
     public void onItemClick(AdapterView<?> list, View view, int position, 
       long id) { 
      Intent intent = new Intent(MainActivity.this, WordActivity.class); 
      String ele = (String)favouritesList.getAdapter().getItem(position); 
      intent.putExtra("word", ele); 
      startActivity(intent); 
     } 
+0

답변 해 주셔서 감사합니다. 내 생각은 안드로이드 코드 –

0
switch(list.getId()){ 
case R.id.listDictionary: 
//listDictionary related action here 
break; 

case R.id.listFavourites: 
// listFavourites related action here 
break; 

default: 
    break; 
}