我花了幾個小時尋找解決方案,但是我嘗試過的所有方法都不起作用,它只是產生與下面的代碼相同的結果。在適配器中使用onClickListener的Android問題
我正在嘗試讓onClickListener
更改TextView
的可見性,但是此代碼始終設置我單擊的那個,然後再單擊下一個。
class EventiAdapter extends ArrayAdapter<CustomEventi> {
List<CustomEventi> customEventi;
LayoutInflater inflater;
EventiAdapter(@NonNull Context context, @LayoutRes int resource, List<CustomEventi> objects) {
super(context, resource, objects);
customEventi = objects;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view = convertView;
final EventiViewHolder eventiViewHolder;
if(view == null) {
eventiViewHolder = new EventiViewHolder();
view = inflater.inflate(R.layout.eventi_list, parent, false);
eventiViewHolder.imageTV = (ImageView) view.findViewById(R.id.image);
eventiViewHolder.nameTV = (TextView) view.findViewById(R.id.name);
eventiViewHolder.categoryTV = (TextView) view.findViewById(R.id.category);
eventiViewHolder.latLngTV = (TextView) view.findViewById(R.id.latLng);
eventiViewHolder.placeTV = (TextView) view.findViewById(R.id.place);
eventiViewHolder.dateTV = (TextView) view.findViewById(R.id.date);
eventiViewHolder.timeTV = (TextView) view.findViewById(R.id.time);;
eventiViewHolder.viewInfo = (Button) view.findViewById(R.id.viewInfo);
eventiViewHolder.informationTV = (TextView) view.findViewById(R.id.information);
eventiViewHolder.mapImage = (ImageView) view.findViewById(R.id.mapImage);
view.setTag(eventiViewHolder);
} else {
eventiViewHolder = (EventiViewHolder) view.getTag();
}
eventiViewHolder.viewInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(eventiViewHolder.informationTV.getVisibility() == View.VISIBLE) {
eventiViewHolder.informationTV.setVisibility(View.GONE);
eventiViewHolder.mapImage.setVisibility(View.GONE);
eventiViewHolder.viewInfo.setText("VISUALIZZA INFORMAZIONI");
}
else {
eventiViewHolder.informationTV.setVisibility(View.VISIBLE);
eventiViewHolder.mapImage.setVisibility(View.VISIBLE);
eventiViewHolder.viewInfo.setText("NASCONDI INFORMAZIONI");
}
}
});
System.out.println("POSITION: "+position);
CustomEventi cstEventi = customEventi.get(position);
eventiViewHolder.setDataIntoViewHolder(cstEventi);
return view;
}
}
謝謝你在前進的人誰會盡力幫助我。
你的意思是你的改變只對少數物品有效,你想讓它在所有物品上? – pouya
我的意思是,當我點擊20列表中的第一項時,第一項是做它必須做的事情,但變化發生在屏幕下方的視圖(在我的例子中是第三個),然後是下面的其他人如果代碼不僅僅作用於點擊的項目 – DomeWTF
你只需要重置你的適配器。沒有其他方式 'recyclerView'只是綁定屏幕上的視圖項目,其他項目根本不存在在那一刻 – pouya