2016-04-24 9 views
0

私のページをスクロールすると、一部のビューが新しい場所に表示されますが、アダプターのすべてのコンテンツが表示されるわけではなく、一部の種類のみ表示されます。RecyclerViewを停止する方法

import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import java.util.List; 

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> { 

private List<BabyFigure> rinfoList ; 


public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView id,date,time,type,quantity,demo; 

    public MyViewHolder(View view) { 
     super(view); 
     id = (TextView) view.findViewById(R.id.recycle_view_id); 
     date = (TextView) view.findViewById(R.id.recycle_view_date); 
     time = (TextView) view.findViewById(R.id.recycle_view_time); 
     type = (TextView) view.findViewById(R.id.recycle_view_type); 
     quantity = (TextView) view.findViewById(R.id.recycle_view_quantity); 
     demo = (TextView) view.findViewById(R.id.recycle_view_demo); 
    } 
} 

public RecyclerViewAdapter(List<BabyFigure> infoList) { 
    this.rinfoList = infoList; 
    setHasStableIds(true); 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_content, 
      parent,false); 
    return new MyViewHolder(itemView); 
} 

@Override 
public int getItemCount() { 
    Log.d(getClass().getSimpleName(),String.valueOf(rinfoList.size())); 
    return rinfoList.size(); 
} 

@Override 
public long getItemId(int position) { 
    return super.getItemId(position); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder,int position) { 
    BabyFigure babyFigure = rinfoList.get(position); 
    holder.quantity.setText(String.valueOf(babyFigure.getQuantity())); 
    holder.id.setText(String.valueOf(babyFigure.getId())); 
    holder.demo.setText(babyFigure.getDemo()); 
    holder.date.setText(babyFigure.getDate()); 
    holder.time.setText(babyFigure.getTime()); 
    holder.type.setText(babyFigure.getType()); 
} 

}

はあなたがgetItemId()を実装していませんでした

答えて

3

問題があるそんなにありがとう: は、以下の私のアダプタクラスです。スーパークラス実装を呼び出すと、すべての位置に対して同じ値が返されます。

非常に少なくとも、あなたがこれを行うことができます:

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

しかし、あなたのデータ項目は、実際に意味のあるIDを持っている場合は、あなたの代わりにアイテムのIDを返す必要があります。

@Override 
public long getItemId(int position) { 
    return rinfoList.get(position).getId(); 
} 
+0

実際、getItemIdメソッドをオーバーライドしましたが、代わりに「return super.getItemID(position)」を使用します。とにかく、私はあなたの助言に従って、それは動作します、ありがとうございます –

+0

それは私のために働いていない...あなたgetItem IDを設定するのを助けてくれますか?私はArrayList を使用しています。idを取得できません。 –

+0

@JadavLalit理想的には、オブジェクトを表すために 'Object'よりも意味のある具体的なものを使用するべきです。 IDは、特定のアイテムを一意に識別する論理的な値です。あなたの特定のユースケースを意味するものは、あなたが決定し実装することです。 – Karakuri

関連する問題