2

ImageView와 두 개의 TextView가있는 customview를 사용했습니다. RecyclerView.Adapter입니다. Picasa 라이브러리를 사용하여 이미지를 표시했습니다.Recyclerview에서 스크롤 할 때 이미지의 위치가 잘못되었습니다.

public void onBindViewHolder(final ViewHolder holder, final int position) { 
     Picasso.with(context) 
      .load(url) 
      .placeholder(R.drawable.placeholder) 
      .error(R.drawable.error) 
      .resize(100, 100)      
      .into(ivProfile); 

    holder.tvFirstName.setText(object.getFirstName(); 
    holder.tvSecondName.setText(object.getSecondName);} 


    public int getItemCount() 
     { 
     return profileListDetails.size(); 
     } 

class ViewHolder extends RecyclerView.ViewHolder { 

    public TextView tvFirstName ; 
    public TextView tvSecondName ; 
    public ImageView ivProfile; 

     public ViewHolder(View itemView) { 
     super(itemView); 
     ivProfile= (ImageView) itemView.findViewById(R.id.ivProfile); 
     tvFirstName = (TextView) itemView.findViewById(R.id.tvFirstName); 
     tvSecondName = (TextView) itemView.findViewById(R.id.tvSecondName); 

    } 
} 

그리고 내 RecyclerView -

 <android.support.v7.widget.RecyclerView    
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbarAlwaysDrawVerticalTrack="true" 
     android:scrollbars="vertical> 

</android.support.v7.widget.RecyclerView> 

활동 클래스는 다음과 같습니다 -

public class MainActivity extends AppCompatActivity { 

private RecyclerView rv_profileList; 
private List<ProfilePOJO> profileList; 
private RecyclerView.LayoutManager layoutManager; 
private RecyclerView.Adapter recycleAdapter; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_profile_list); 

rv_profileList = (RecyclerView) findViewById(R.id.rv_profileList); 
profileList = new ArrayList<>(); 

    getProfileDetails(""); 

} 


public void getProfileDetails(String ID) { 

    RestAdapter adapter = new RestAdapter.Builder() 
      .setEndpoint(Constants.PROFILE_URL) 
      .build(); 
     API objGetProfile = adapter.create(API.class); 


    objGetProfile.getProfile(
      ID, 
          new Callback<String>() { 
       @Override 
       public void success(String result, Response response) { 
        try { 

         Gson gson = new Gson(); 
         Type listType = new TypeToken<List<ProfilePOJO>>() { 
         }.getType(); 

         profileList = (List<ProfilePOJO>) gson.fromJson(result, listType); 

         if (profileList.size() != 0) { 

          recycleAdapter = new ProductListAdapter(productList, MainActivity.this); 

          rv_profileList.setAdapter(recycleAdapter); 

                } 
              } catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } 

       @Override 
       public void failure(RetrofitError error) { 
        error.printStackTrace(); 
        Toast.makeText(MainActivity .this, "Please check Internet connection !", Toast.LENGTH_LONG).show(); 

       } 

      } 
    ); 

} 
} 

문제는 내가 이미지가 변경 alter입니다 얻을 후 recyclerview을 이동하려고 할 때입니다, 수있는 하나 도와주세요. 응답들에 대한

+0

"변경됨"이란 무엇을 의미합니까? 다른 이미지가 표시됩니까? 또는 그들이 깜박입니까? –

+0

이미지가 잘못 배치 된 경우 첫 번째 이미지가 세 번째 위치로 이동하거나 네 번째 이미지가 6 번째 위치로 표시됩니다. – Vijay

+0

위치는 계속 변경되지만 위치를 클릭하면 세부 정보가 표시되고 오른쪽 이미지가 표시됩니다. – Vijay

답변

0

덕분에 ... 마지막으로 나는 등 전 세계적으로 선언 ivProfile 위의 코드에서 위의 코드에서이

public void onBindViewHolder(final ViewHolder holder, final int position) { 
    Picasso.with(context) 
     .load(url) 
     .placeholder(R.drawable.placeholder) 
     .error(R.drawable.error) 
     .resize(100, 100)      
     .into(ivProfile); 

내가했던 변화 작은 변화 ... 를 해결 한, 그래서 이것은 할 수없는 ViewHolder 참조와 연결하십시오. 그래서 아래와 같이 변경했습니다 ...

public void onBindViewHolder(final ViewHolder holder, final int position) { 
    Picasso.with(context) 
     .load(url) 
     .placeholder(R.drawable.placeholder) 
     .error(R.drawable.error) 
     .resize(100, 100)      
     .into(holder.ivProfile); 
관련 문제