Intereting Posts
Android: match_parent игнорируется при использовании addView Студия Android не загружает источники и javadoc Как монтировать файл android img под Linux? Получение размера физического экрана / dpi / плотности пикселей в Chrome на Android Как обмануть место для проведения тестирования с помощью LocationClient и Geofences на Android? In-App Billing: инвентаризация не правильная; Снова закупает пользователя Установите карту SD вручную из оболочки adb в android Сохранение массивов строк с помощью SharedPreference Начать активность, даже если телефон Android находится в режиме блокировки / блокировки Совместное использование изображений из внутреннего хранилища с помощью FileProvider Отслеживание кампаний в магазине Google Play не работает с установкой веб-браузера Как предварительно заполнить базу данных sqlite Green DAO Имя приложения с надстрочным текстовым андроидом ОШИБКА: Android Source Generator: Файл AndroidManifest.xml не найден Скрыть TabLayout на прокрутке содержимого вместо ToolBar

GetAdapterPosition () не возвращает позицию элемента в RecyclerView

Это своего рода продолжение или дополнение к этой должности . Я пытаюсь получить позицию элемента в моем RecyclerView, но ни один из методов, которые я пытался, работал.

Я вызвал getAdapterPosition () в свой конструктор PersonViewHolder и присвоил его значение целочисленной позиции, которая используется в классе UnitOneFragment чтобы что-то сделать (см. Метод onClick ()). Но что бы это ни было, этого не происходит, и я предполагаю, что метод getAdapterPosition () не работает или не используется правильно.

Мой адаптер:

 public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> { Context mContext; RVAdapter(Context context, List<Chapter> chapters) { mContext = context; this.chapters = chapters; } public static CardView cv; public static int position; public static String chapterNumberTitle; public class PersonViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView chapterName; TextView chapterNumber; // ImageView chapterPhoto; public PersonViewHolder(View itemView) { super(itemView); cv = (CardView) itemView.findViewById(R.id.cv); chapterName = (TextView) itemView.findViewById(R.id.chapter_name); chapterNumber = (TextView) itemView.findViewById(R.id.chapter_number); // chapterPhoto = (ImageView) itemView.findViewById(R.id.person_photo); chapterNumberTitle = chapterNumber.getText().toString(); position = getAdapterPosition(); itemView.setOnClickListener(this); } @Override public void onClick(View v) { UnitOneFragment.chapterChecker(); Intent intent = new Intent(mContext, ChapterActivity.class); mContext.startActivity(intent); } } List<Chapter> chapters; @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } @Override public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false); PersonViewHolder pvh = new PersonViewHolder(v); return pvh; } @Override public void onBindViewHolder(PersonViewHolder personViewHolder, int i) { personViewHolder.chapterName.setText(chapters.get(i).chapterName); personViewHolder.chapterNumber.setText(chapters.get(i).chapterNumber); // personViewHolder.chapterPhoto.setImageResource(persons.get(i).photoId); } @Override public int getItemCount() { return chapters.size(); } } 

Другой класс:

 public class UnitOneFragment extends android.support.v4.app.Fragment { private List<Chapter> chapters; private RecyclerView rv; private RecyclerView.LayoutManager llm; public UnitOneFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View v = inflater.inflate(R.layout.fragment_unit_one, container, false); getActivity().setTitle("Unit One"); rv = (RecyclerView) v.findViewById(R.id.rv); rv.setHasFixedSize(true); llm = new LinearLayoutManager(getActivity()); rv.setLayoutManager(llm); initializeData(); initializeAdapter(); return v; } private void initializeData() { chapters = new ArrayList<>(); chapters.add(new Chapter("Human Prehistory to the Early Civilizations", "Chapter One")); chapters.add(new Chapter("Classical China", "Chapter Two")); chapters.add(new Chapter("Classical India", "Chapter Three")); chapters.add(new Chapter("Classical Greece and Rome", "Chapter Four")); chapters.add(new Chapter("Classical Period: Declines and Diversities", "Chapter Five")); } private void initializeAdapter() { RVAdapter adapter = new RVAdapter(getActivity(), chapters); rv.setAdapter(adapter); } public static void chapterChecker() { if (RVAdapter.position == 0) { SummaryFragment.summaryText.setText("Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32."); } } } class Chapter { String chapterName; String chapterNumber; // int photoId; Chapter(String chaptername, String chapternumber) { this.chapterName = chaptername; this.chapterNumber = chapternumber; // this.photoId = photoId; } } 

Мой код кажется довольно понятным, но если есть что-то запутанное, сообщите мне, и я добавлю дополнительную информацию. И снова проблема заключается в том, что я не могу получить позицию элемента в RecyclerView и затем действовать на нем.

Вызовите getAdapterPosition по методу onClick, потому что тогда во время щелчка u хотите узнать позицию элемента. Если u проверить во время создания, он будет (в большинстве случаев) неточным.