2012-09-20 2 views
0

Button을 모든 ListView 요소에서 단일 ImageButton의 표시 유형을 변경하도록 만들고 있습니다.사용자 지정 어댑터 목록 뷰의 모든 요소를 ​​표시/숨김으로 설정

public View getView(final int position, final View convertView, final ViewGroup parent) { 
    View vi=convertView; 
    if(convertView==null) 
    { 
     vi = inflater.inflate(R.layout.custom_row_view, null); 
    } 

/* 
other non important view stuff 
*/ 
if(deleteButton != null){ 
     deleteButton.setVisibility(View.INVISIBLE); 
     deleteButton.setTag(position); 
     deleteButton.setOnClickListener(deleteListener); 
    } 

    return vi; 
} 

public void setVisibility() 
{ 
    if(deleteButton.getVisibility() == View.INVISIBLE){ 
     deleteButton.setVisibility(View.VISIBLE); //Here i want to access all elements 
     Log.i("setVisibility", "Changing to "+ deleteButton.getVisibility() + " element: " + deleteButton.getTag()); 
//Logcat output: Changing to 0 element: 2 


    } else if(deleteButton.getVisibility() == View.VISIBLE){ 
     deleteButton.setVisibility(View.INVISIBLE); 
     Log.i("setVisibility", "Changing to "+ deleteButton.getVisibility() + " element: " + deleteButton.getTag()); 
//Logcat output: Changing to 4 element: 2 

    } 
} 
: 나는 사용자 정의 어댑터의 특정 요소 (내가 생각하는)

관련 코드 부분에 액세스 할 수있는 쉬운 방법이 없기 때문에, 접근에 대한 권리 요소를 찾는 데 문제 간단하게 사용하여 내가 방법을 부르는

CustomAdapter listAdapter; 
ListView listViewLeft; 
ListView listViewRight; 

OnCreate: 
listAdapter=new CustomAdapter(this, link, names, names2, buttonText,context, plistArray); 
listViewLeft.setAdapter(listAdapter); 
listViewRight.setAdapter(listAdapter); 

:

물건은 내가 메인 활동에 사용

OnClickListener editListener = new OnClickListener() { 
    public void onClick(View view) { 
     listAdapter.setVisibility(); 
     } 
} 

아무도 아이디어가 있다면 정말 고마워요 :)

답변

0

정말 간단합니다. 나는 전화 잊었 :

listAdapter.notifiDataSetChanged(); 

그러나 때마다 당신이의 getView 메서드를 호출 할 메소드를 호출, 그래서 난 그냥 사용자 정의 어댑터의 getView

if(deleteButton != null){ 
     if(deleteButton.getVisibility() == View.INVISIBLE){ 
      deleteButton.setVisibility(View.VISIBLE); 
     } else if(deleteButton.getVisibility() == View.VISIBLE){ 
      deleteButton.setVisibility(View.INVISIBLE); 
      } 
     deleteButton.setTag(position); 
     deleteButton.setOnClickListener(deleteListener); 
    } 

이 추가 그리고 볼에 XML의 기본 설정 . 이것이 가장 효율적인 방법인지는 모르겠지만 최소한 의도 한대로 작동합니다.

0

어댑터의 보이지 않는 단추 또는 가시성 값이있는 항목의 인덱스를 저장하고 (모든보기/convertView에 설정된 가시성의) 사용해야합니다.) in getView(). ListView 측면에서 뷰 재사용과 관련이 있습니다.
my answer here을 참조하여 문제를 해결하고 this Romain Guy Google I/O talk에 대한 자세한 내용은 ListView

관련 문제