У меня есть горизонтальное окно просмотра с изображениями и текстом, когда я нажимаю на любой элемент, я хочу, чтобы он отображался как отмеченный.Я не хочу выбирать несколько предметов.Только один предмет за один раз!Вот пример, который я хочу достичь В настоящее время я показываю изображения в горизонтальной программе recyclerView
public class FilterPageHorizontalRecyclerViewAdapter extends RecyclerView.Adapter<FilterPageHorizontalRecyclerViewAdapter.ViewHolder>
{
private int selectedPosition = -1;
private static final String TAG = "RecyclerViewAdapter";
//vars
private ArrayList<String> mNames = new ArrayList<>();
private ArrayList<Integer> mImageUrls = new ArrayList<>();
private Context mContext;
public FilterPageHorizontalRecyclerViewAdapter(Context context, ArrayList<String> names, ArrayList<Integer> imageUrls) {
mNames = names;
mImageUrls = imageUrls;
mContext = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.horizontal_recycler_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
Log.d(TAG, "onBindViewHolder: called.");
Glide.with(mContext)
.asBitmap()
.load(mImageUrls.get(position))
.into(holder.image);
holder.name.setText(mNames.get(position));
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedPosition = position;
Log.d(TAG, "onClick: clicked on an image: " + mNames.get(position));
Toast.makeText(mContext, mNames.get(position), Toast.LENGTH_SHORT).show();
holder.image.setImageResource(R.drawable.ic_bed);
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return mImageUrls.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
CircleImageView image;
TextView name;
public ViewHolder(View itemView) {
super(itemView);
image = itemView.findViewById(R.id.image_view);
name = itemView.findViewById(R.id.name);
}
}
}
public class HorizontalRecyclerView extends AppCompatActivity {
private ArrayList<String> mNames = new ArrayList<>();
private ArrayList<Integer> mImageUrls = new ArrayList<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_horizontal_recycler_view);
getImages();
}
private void getImages(){
mImageUrls.add(R.drawable.home);
mNames.add("Havasu Falls");
mImageUrls.add(R.drawable.home);
mNames.add("Trondheim");
mImageUrls.add(R.drawable.home);
mNames.add("Portugal");
mImageUrls.add(R.drawable.home);
mNames.add("Rocky Mountain National Park");
mImageUrls.add(R.drawable.home);
mNames.add("Mahahual");
mImageUrls.add(R.drawable.home);
mNames.add("Frozen Lake");
mImageUrls.add(R.drawable.home);
mNames.add("White Sands Desert");
mImageUrls.add(R.drawable.home);
mNames.add("Austrailia");
mImageUrls.add(R.drawable.home);
mNames.add("Washington");
initRecyclerView();
}
private void initRecyclerView(){
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(layoutManager);
FilterPageHorizontalRecyclerViewAdapter adapter = new FilterPageHorizontalRecyclerViewAdapter(this, mNames, mImageUrls);
recyclerView.setAdapter(adapter);
}`enter code here`
}
. См. Пример изображения в разделе Типы свойств