如何在OnClick方法中获取当前位置以删除行

时间:2019-02-01 15:21:06

标签: java listview

我对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 ;
}



}

我的问题是:如何获取索引(位置)以删除相应的行?如果您能让我走上正轨,我将不胜感激!

1 个答案:

答案 0 :(得分:1)

与其在适配器上执行此操作,不如在活动中执行此操作。 只需为您的ListView实现clickListener

yourListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
    listView.removeViewAt(position);
}
});