我对Java完全陌生,已经被困了几个小时。我看了这么多主题,但没有看完就没用。但是我想这并不复杂。
我必须创建一个OnClick方法,该方法将删除整个行,该行由txtListJour,txtListMontant,txtListMotif和cmdSuppHf组成。 cmdSuppHf是删除按钮。
这里是代码:内联注释部分显然无法正常工作:
class FraisHfAdapter extends BaseAdapter {
private final ArrayList<FraisHf> lesFrais ; // liste des frais du mois
private final LayoutInflater inflater ;
public FraisHfAdapter(Context context, ArrayList<FraisHf> lesFrais) {
inflater = LayoutInflater.from(context) ;
this.lesFrais = lesFrais ;
}
@Override
public int getCount() {
return lesFrais.size() ;
}
@Override
public Object getItem(int index) {
return lesFrais.get(index) ;
}
@Override
public long getItemId(int index) {
return index;
}
private class ViewHolder {
TextView txtListJour ;
TextView txtListMontant ;
TextView txtListMotif ;
ImageButton cmdSuppHf ;
}
@Override
public View getView(final int index, View convertView, ViewGroup parent) {
ViewHolder holder ;
if (convertView == null) {
holder = new ViewHolder() ;
convertView = inflater.inflate(R.layout.layout_liste, parent, false) ;
holder.txtListJour = convertView.findViewById(R.id.txtListJour);
holder.txtListMontant = convertView.findViewById(R.id.txtListMontant);
holder.txtListMotif = convertView.findViewById(R.id.txtListMotif);
holder.cmdSuppHf = convertView.findViewById(R.id.cmdSuppHf);
convertView.setTag(holder) ;
}else{
holder = (ViewHolder)convertView.getTag();
}
holder.txtListJour.setText(String.format(Locale.FRANCE, "%d", lesFrais.get(index).getJour()));
holder.txtListMontant.setText(String.format(Locale.FRANCE, "%.2f", lesFrais.get(index).getMontant())) ;
holder.txtListMotif.setText(lesFrais.get(index).getMotif()) ;
// holder.cmdSuppHf.setOnClickListener(view -> delete(holder.getAdapterPosition()));
holder.cmdSuppHf.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// int index = view.getTag();
}
});
return convertView ;
}
}
我的问题是:如何获取索引(位置)以删除相应的行?如果您能让我走上正轨,我将不胜感激!
答案 0 :(得分:1)
与其在适配器上执行此操作,不如在活动中执行此操作。 只需为您的ListView实现clickListener
yourListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
listView.removeViewAt(position);
}
});