"Не удается разрешить символ ItemClickListener" - PullRequest
0 голосов
/ 19 января 2019

Могу ли я узнать, почему он показывает ошибку «Не удается разрешить символ ItemClickListener»?Нужно ли добавлять библиотеку или что-то еще, чтобы решить эту проблему, или я не должен объявлять это здесь?

public static class FoodViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    private ItemClickListener itemClickListener;

    public void setItemClickListener(ItemClickListener itemClickListener) {
        this.itemClickListener = itemClickListener;
    }

    View view;
    public FoodViewHolder (View v){
        super(v);
        view= v;
    }
    public void setName(String title){
        TextView post_title = (TextView)view.findViewById(R.id.Menu_Name);
        post_title.setText(title);
    }
    public void setImage(Context ctx, String image){
        ImageView menuImage = (ImageView) view.findViewById(R.id.Menu_Image);
        Picasso.with(ctx).load(image).into(menuImage);
    }

    @Override
    public void onClick(View v) {

    }
}

Ответы [ 2 ]

0 голосов
/ 19 января 2019

В общем случае для RecyclerView мы создаем интерфейс для обработки событий нажатия.В отличие от обычного нажатия кнопки, события RecyclerView Click не могут быть обработаны напрямую.Поскольку RecyclerView - это адаптер (поставщик данных для представления), вы не можете напрямую обрабатывать щелчки элементов отсюда и обновлять представление.Для этого вам нужен отдельный интерфейс, который в вашем случае равен ItemClickListener (создайте файл интерфейса отдельно в вашем проекте).В этом интерфейсе вам нужно объявить метод, например, что-то вроде этого

public Interface ItemClickListener{
     void onRecyclerViewItemClicked(int position);
}

Создать OnClickListener для вашего просмотра (который присутствует в одной строке. Например: изображение, текст и т. Д.); @ Override

public void onBindViewHolder(ViewHolder holder, int position) {
    holder.myText.setOnClickListener(new View.OnClickListener() {
@Override
    public void onClick(View view) {
         itemClickListener.onRecyclerViewItemClicked(position);
         //itemClickListener is the Interface Reference Variable
    }
});
}

И в вашей Деятельности вам необходимо реализовать этот Интерфейс, такой как

public class YourActivity extends AppCompatActivity implements ItemClickListener {
     ....
     ....
     protected void onCreate(Bundle savedInstanceState) {
          ...
          ...
     }

     @Override
     public void onRecyclerViewItemClicked(int position) {
          //You will get the position of the Item Clicked over recycler view
          //You can handle as per your requirement
     }
}

. После этого вы прослушаете событие щелчка на панели повторного просмотра действия.Тогда вы можете справиться с этим соответственно.Если у вас есть дополнительные сомнения, следуйте ссылкам:
https://stackoverflow.com/a/40584425/8331006
https://stackoverflow.com/a/28304164/8331006

0 голосов
/ 19 января 2019

вы можете установить прослушиватель щелчков для любого представления, которое вам не нужно, вам не нужно объявлять его отдельным

yourView.setOnClickListener(this);

и в свой onClick (View v) добавлять код, который вы хотите всякий раз, когда вынапример, щелкните по желаемому виду:

if(v==imageView){
 //write your code here 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...