2016-09-01 6 views
1

Android Recycler Viewを使用して次のことを行う方法の解決策が必要です。Android Recycler Viewは1つの画像のみを選択し、選択した画像に目盛りを表示します

私は複数の画像を持っており、ラジオボタンの仕組みのように1つの画像しか選択する必要はありません。今では私が持っているすべての画像を選択できますが、ラジオボタンのように動作するように現在の動作の動作を制限する必要があります(例)選択されている場合、他の画像を選択しないでください。

私は以下のコードで試してみましたが、私にとっては運がありません。誰もが間違いを是正し、私の必要性に応じてコードを実行可能にすることができます。

public class StarCountAdapter extends RecyclerView.Adapter<StarCountAdapter.StarCountHolder> { 
    Context context; 
    LayoutInflater inflater; 
    List<StarCount> starCounts = new ArrayList<>(); 

    public StarCountAdapter(Context context, List<StarCount> starCounts) { 
     this.context = context; 
     this.inflater = LayoutInflater.from(context); 
     this.starCounts = starCounts; 
    } 

    @Override 
    public StarCountHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.star_count_row,parent,false); 
     return new StarCountHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(StarCountHolder holder, int position) { 
     StarCount model = starCounts.get(position); 
     Picasso.with(context) 
       .load("http://"+model.getImagePath()) 
       .into(holder.starImage); 
     holder.actorName.setText(model.getName()); 
     holder.counts.setText(""+model.getCount()); 
    } 

    @Override 
    public int getItemCount() { 
     return starCounts.size(); 
    } 

    public class StarCountHolder extends RecyclerView.ViewHolder { 
     ImageView starImage; 
     TextView actorName,counts; 
     StarCount modelCount; 
     public StarCountHolder(View itemView) { 
      super(itemView); 
      starImage = (ImageView) itemView.findViewById(R.id.starCountIv); 
      actorName = (TextView) itemView.findViewById(R.id.acterName); 
      counts = (TextView) itemView.findViewById(R.id.counts); 
     } 
    } 
} 

この問題を解決するには、私は1日以上ぶつかっているので、この問題を解決するために必要です。コード内のエラーを修正し、エラーを修正するための考えを共有します。

+0

trueまたはfalseのようなラジオボタンの位置の値を取得しました。 – MalhotraUrmil

答えて

1
public int selectedPosition = -1 
public class StarCountHolder extends RecyclerView.ViewHolder { 
    ImageView starImage; 
    TextView actorName,counts; 
    StarCount modelCount; 
    public StarCountHolder(View itemView) { 
     super(itemView); 
     starImage = (ImageView) itemView.findViewById(R.id.starCountIv); 
     actorName = (TextView) itemView.findViewById(R.id.acterName); 
     counts = (TextView) itemView.findViewById(R.id.counts); 
     itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       selectedPosition = getLayoutPosition()); 
       notifyDatasetChanged(); 
      } 
     }); 
    } 
} 

今、あなたがあなたの活動で選択した項目を得るためにあなたのバインダーに

@Override 
public void onBindViewHolder(StarCountHolder holder, int position) { 
    StarCount model = starCounts.get(position); 
    Picasso.with(context) 
      .load("http://"+model.getImagePath()) 
      .into(holder.starImage); 
    holder.actorName.setText(model.getName()); 
    holder.counts.setText(""+model.getCount()); 
    if(selectedPosition == position){ 
     // do whatever you want to do to make it selected. 
    } 
} 

を、それを変更、選択した項目の位置で行われ、あなたはこのような何かを行うことができます...

アクティビティ内

StartCount startC = starCounts.get(adapter.selectedPosition); 

助けてくれるといいです

+0

働いています..ありがとうございました:) – Balaji

関連する問題