2017-05-22 7 views
0

사용자 대화 상대 목록을 표시하는 활동이 있습니다. 내 앱에 연락처가있는 경우 팔로우 버튼을 표시하고 싶으면 다른 사람에게 whatsapp 및 전보 아이콘을 표시하여 초대 할 수 있습니다.목록보기가 아래로 스크롤 된 후 항목 이미지가 혼합됩니다.

내가 원하는대로 모든 것을 열면 모든 것이 잘되고 있지만 아래로 스크롤하여 다시 올라 오면 버튼과 whats 앱 아이콘이 다른 연락처와 섞이게됩니다! 팔로우 버튼을 누른 사용자는 whatsapp 아이콘을 보거나 다른 사용자가 팔로우 버튼을 볼 수 있습니다! 그리고 매번 아래로 스크롤하고 다시 위치가 바뀝니다.

나는 모든 연락처 이름과 휴대 전화 번호가 고정되어 있으며 정확해야한다고 말해야합니다! 그냥 이미지가 섞인다!

나는 내가 그것을 고칠 수있는 방법이 을 :(해결하는 방법을 알고 문제가 내의 getView 함수에서 알고 있지만 그나마 TNX : 여기

것은 내 어댑터 모든 코드입니다 :

public class LazyAdapterContactsList extends BaseAdapter { 

private Activity activity; 
private ArrayList<HashMap<String, String>> data; 
private static LayoutInflater inflater=null; 

public ImageLoader profileImageLoader; 
HashMap<String, String> song; 
public LazyAdapterContactsList(Activity a, ArrayList<HashMap<String, String>> d) { 
    activity = a; 
    data=d; 

    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    profileImageLoader=new ImageLoader(activity.getApplicationContext()); 
} 

public int getCount() { 
    return data.size(); 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    ViewHolder holder = null; 
    if(vi==null) { 
     vi = inflater.inflate(R.layout.contacts_list_row, null); 
     holder = new ViewHolder(); 


     holder.listID = (TextView) vi.findViewById(R.id.MyContactslistIDPosition); 
     holder.name = (TextView) vi.findViewById(R.id.MyContactslistName); 
     holder.mobile = (TextView) vi.findViewById(R.id.MyContactslistMobileNumber); 
     holder.whatsAppIcon = (ImageView) vi.findViewById(R.id.MyContactsListWhatsApp); 
     holder.telegramIcon = (ImageView) vi.findViewById(R.id.MyContactsListTelegram); 
     holder.followBtn = (Button) vi.findViewById(R.id.MyContactsListFollowBtn); 
     holder.linearLayout = (LinearLayout) vi.findViewById(R.id.MyContactsthumbnail); 

     holder.profile_thumb_image = (ImageView) vi.findViewById(R.id.MyContactslist_image_profilephoto); 




     vi.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder)vi.getTag();   
    } 



    song = data.get(position); 

    // Setting all values in listview 
    holder.listID.setText(song.get(MyContacts.KEY_ID)); 
    holder.name.setText(song.get(MyContacts.KEY_NAME)); 
    holder.mobile.setText(song.get(MyContacts.KEY_MOBILE)); 


if (song.get(MyContacts.KEY_USER_EXISTS).equals("1")) 
{ 


     if (song.get(MyContacts.KEY_THUMB_PROFILE_URL).equals("no")) { 

     } else { 
      profileImageLoader.DisplayImage(song.get(MyContacts.KEY_THUMB_PROFILE_URL), holder.profile_thumb_image); 
     } 


     }else { 

      holder.linearLayout.setVisibility(View.VISIBLE); 
      holder.followBtn.setVisibility(View.GONE); 
     } 


    return vi; 
} 

public static class ViewHolder { 
    public TextView textView ,listID ,name,mobile; 
    public ImageView whatsAppIcon ,telegramIcon; 
    public Button followBtn; 
    public LinearLayout linearLayout; 
    public ImageView profile_thumb_image; 
} 
} 

답변

3

는 조건 에서 HIDE 또는 VISIBLE 등의 ListView의 전망과 함께 무엇 이건 액션 (있는 경우), 당신은 HIDE 또는 VISIBLE(다른) 반대 상태에서 반대 설정해야합니다.

이 솔루션은 아래 사항에 따라 코드를 변경 시도 :

if (song.get(MyContacts.KEY_USER_EXISTS).equals("1")) 
    { 
     holder.linearLayout.setVisibility(View.GONE); 
     holder.followBtn.setVisibility(View.VISIBLE); 
     if (song.get(MyContacts.KEY_THUMB_PROFILE_URL).equals("no")) { 

     } else { 
      profileImageLoader.DisplayImage(song.get(MyContacts.KEY_THUMB_PROFILE_URL), holder.profile_thumb_image); 
     } 


    }else { 

     holder.linearLayout.setVisibility(View.VISIBLE); 
     holder.followBtn.setVisibility(View.GONE); 
    } 
+0

tnx이 변경으로 인해 아이콘의 문제가 해결되었지만이 코드에는 여전히 문제가 있습니다. – Saeid

+0

profileImageLoader.DisplayImage (song.get (MyContacts.KEY_THUMB_PROFILE_URL), holder.profile_thumb_image); – Saeid

+0

그것은 서버에서 연락처 이미지를 다운로드합니다. 하지만 여전히 스크롤 연락처 프로필 사진은 서로 섞여있다! – Saeid

0

간단한 답변은 부동 동작 버튼을 사용하는 것입니다. 버튼의 위치는 동일하게 유지되며 짜증을 내지 않을 것입니다.

+0

아니요, 나는 인스 타 그램 따라가는 버튼이 있습니다. 사용자가 따라 다니면 버튼을 다시 표시 할 필요가 없으며 보이지 않게됩니다. – Saeid

+0

목록 페이지 또는 개별 행에 대해 공통된 후속 버튼을 표시 하시겠습니까? indiviual 행에 대한 –

+0

(아직 연락하지 않은 연락처). 나는 그것을 올바르게 보여 주지만 스크롤 한 후에는 혼합되어 나타나고 일부 사용자는 따르지 않는 버튼을 갖습니다. – Saeid

0

뷰는 시스템에서 재사용/재활용됩니다. 따라서 getView에서 매번 profile_thumb_image을 설정해야합니다.

그렇지 않은 경우 이전 호출 getView에서 이미지가 설정된 재활용 된보기가 표시됩니다.

0

먼저이 변수 글로벌

HashMap의 노래를하지 않는다;

가능하면 ur getView() 메소드를 사용하십시오.

@coyer 당신은 볼

가/재사용 시스템에서 재생됩니다 말했듯이 - 그래서 당신은 (재) ... 모든 시간의 getView에서

희망이 도움이 유 profile_thumb_image 설정해야 유 할 수있는 질문이있는 경우