2

ImageViewと2つのTextViewが含まれているcustomviewを使用しました。これはRecyclerView.Adapterです。イメージを表示するためにPicassoライブラリを使用しました。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> 

Activityクラスである: -

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(); 

       } 

      } 
    ); 

} 
} 

私はその後、画像が変更さ変化させるものを取得recyclerviewをスクロールしようとしていたときに問題があり、 はどんなことができます1つは私を助けます。応答のみんなのために

+0

「変更されました」とはどういう意味ですか?異なる画像が表示されていますか?またはそれらは点滅していますか? –

+0

画像が正しく配置されていない場合は、1番目の画像が3番目の位置に移動するか、4番目の画像が6番目の位置に表示されます。 – Vijay

+0

位置は変わりませんが、特定の位置をクリックすると詳細が表示されます。 – Vijay

答えて

0

おかげ... 最後に、私はこの

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); 

を解決してきた私は、グローバルに宣言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); 
関連する問題