当我把它放在Activity时。它仍然正常活跃。但是把它放在recyclerview的项目点击事件中。然后它没有激活。任何人都可以在项目点击中放置post方法吗? 我的代码:
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
答案 0 :(得分:0)
您的代码:
public MyViewHolder(View view){
super(view);
txt=view.findViewById(R.id.txt_item_rec);
itemView.setOnClickListener(new View.OnClickListener()
首先,您使用的是itemView
,但是您将view
传递给MyViewHolder
,然后传递给super
。您应该将其替换为view
第二个问题可能是您无法在ViewHolder中找到您在onBindViewHolder
中获得该位置的位置,因为视图符号只是您行的模型。
如何在onBindViewHolder
方法
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//move your code here;
}
});
}
答案 1 :(得分:0)
onBindViewHolder对于任何听众来说都是一个完全错误的地方,你可以使用getLayoutPosition()和getAdapterPosition()轻松地在自定义视图持有者上获得位置。
public MyViewHolder(View view){
super(view);
txt=view.findViewById(R.id.txt_item_rec);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos=getAdapterPosition();
if(pos!=RecyclerView.NO_POSITION) {
Toast.makeText(view.getContext(),strings.get(pos),Toast.LENGTH_SHORT).show();
APIService mapi= ApiUtils.getAPIService();
mapi.importFileExcel(strings.get(pos)).enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if(response.isSuccessful()){
try {
Toast.makeText(context,response.body().string(),Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
}
}
});
}
}