列表适配器中的回调方法不起作用

时间:2019-11-17 16:19:09

标签: android callback onclick recycler-adapter

我使用了在上一个问题中被指导使用的回调方法。它似乎不起作用。不调用onClick()方法。回调方法似乎是一个非常广泛的概念。我不知道如何缩小搜索范围以获取相关信息,或者如何找到我得到的代码有什么问题。

ListActivity -适配器已初始化,并在此处设置了点击侦听器

if line[-2:] == '0':
    twos += 1
elif line[-3:] == '000':
    eights +=1

Adapter类中的回调方法

line = line.strip()
if line[-1] == '0':
    twos += 1      
else:
    continue  # a micro optimization.
              # If it does not end with '0', obviously it can't end with '000'
if line[-3:] == '000':
    eights +=1

谢谢!

2 个答案:

答案 0 :(得分:0)

您无需传递视图和位置,只需传递所需的对象即可。

更改界面参数

 public interface ItemClickListener {
     void onItemClick(Country country);
 }

您可以传递所需的对象

public void onClick(View view) {

     final Country currentCountry = countriesList.get(getAdapterPosition());

     mClickListener.onItemClick(currentCountry);
}

在您的活动中,获取您的国家/地区

 @Override
 public void onItemClick(Country country) {

      //  get country and do anything you want
 }

希望这会有所帮助

答案 1 :(得分:0)

那是因为您缺少 RowViewHolder的 onClick方法中的 @Override 注释。

应如下图所示。

class RowViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        TextView viewName;
        ImageView viewFlag;
        LinearLayout countryEntry;

        RowViewHolder(View view) {

            super(view);
            viewName = view.findViewById(R.id.name);
            viewFlag = view.findViewById(R.id.flag);
            countryEntry = view.findViewById(R.id.rowId);
            view.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
            ListActivity.position = getAdapterPosition();
            final Country currentCountry = countriesList.get(getAdapterPosition());
            listActivity.setCurrentCountry(currentCountry);

        }
    }