我使用了在上一个问题中被指导使用的回调方法。它似乎不起作用。不调用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
谢谢!
答案 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);
}
}