2014-09-10 2 views
1

내 안드로이드 앱에서 내 메인 ActivityList Activity까지 확장됩니다. Item이라는 요소를 저장하고 레이아웃은 itemLayout xml 파일로 정의되며 사용자 정의 어댑터 (ItemAdapter)를 사용하여 주 활동의 목록 뷰로 데이터를 전송합니다. itemLayout에는 ImageView이 있는데 사용자가 목록보기에서 특정 항목을 클릭하면 이미지가 변경됩니다. 제 의견으로는 달성 할 수있는 가장 쉬운 방법은 특정 항목 (클릭 한 레이아웃)에 대한 액세스를 얻는 것입니다. ImageView을 찾고 setImageBitmap 메서드를 호출하십시오. 클릭 한 항목의 레이아웃을 어떻게 "찾을 수 있습니까?" 나는 방법으로 많은 것을 시도했다 :목록보기에서 특정 항목의 레이아웃에 액세스하십시오.

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

} 

아무 것도 작동하지 않았다. 내 ItemAdapter에 아무 것도 추가해야합니까? 또는 onListItemClick(…)에서 할 수 있습니까? 그러나 어떻게 찾을 수없는가요?

답변

4

로 주조되어야를 호출 할 수 있습니다. 어댑터는 데이터를 뷰에 매핑하는 방법입니다. 따라서 특정 뷰가 주어진 위치를 찾는 방법을 변경하려면 렌더링 된 뷰가 변경되도록 데이터의 상관 관계를 변경해야합니다. 뷰를 직접 수정하려고하면 어댑터를 사용하는 방법이 달라집니다.

그래서 사용자가 항목을 클릭 할 때. 위치 번호를 통해 어댑터에서 해당 항목을 찾습니다. 그런 다음 항목을 업데이트하고 notifydatetet이 호출되는지 확인하십시오. 그 동안 어댑터의 getView()이 적절한 이미지 표시를 처리합니다.

+0

확실히 가장 좋은 해결책입니다. 감사합니다 –

+0

나는 다른 문제에 맞았다, 당신의 첫 번째 파라 내가 뭘 찾았는지 줬어. –

0

클릭 품목 레이아웃을 수정해야한다는 것을 이해 했으므로 onListItemClicked의 인수 사용 :

v.findViewById(<your_img_view_id>) 

성능 향상을 위해보기 소유자를 사용합니다.

+0

예,이 방법은 내가 원하는 결과를 줄이 코드를보고 클릭하여 이미지 뷰 비트 맵을 변경할 수 있습니다 getView() mtheod에 사용자 정의 adapter 클래스에서 가능하지만 내 목표는 영구적 인 변경을하는 것입니다. 목록보기에 검색 기능이 연결되어 있고 사용자가 아무 것도 입력하지 않을 때마다이 접근 방식을 변경했습니다. 아니면 항목의보기를 위치에서 가져 오는 방법이 있을까요? 그런 다음 데이터 세트가 변경 될 때마다보기를 변경할 수 있습니다. –

0

onListItemClickListView의 요소를 누르면 실행됩니다. 당신은 데이터 세트의 요소를 검색하려면, 당신은 단순히

l.getItemAtPosition(position) 

반환 값은 당신이 약간 틀린 방법에 대해 생각하고있는 특정 개체

0

예 그것은, 유

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     View rowView = convertView; 
     rowView = inflater.inflate(R.layout.playlist_item, null); 

     final ImageView im = (ImageView) rowView.findViewById(R.id.favorite); 
     im.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       // Do your stuff here 

      } 
     }); 

     return rowView; 
    } 
관련 문제