位置索引始终在getView中返回0

Adn*_*nan 3 android listview baseadapter

我想实现一个ListView,其中每行都有Delete Btn.

我唯一的问题是当我点击某行的删除Btn时,行0的行刚删除!

我想不知怎样我的getView中的Position参数无法更新,总是有0值

我该怎么办?!

谢谢.

import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
//import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class InvoiceListAdapter extends BaseAdapter {

  ArrayList<Object> _itemList;
  public Activity _context;
  public LayoutInflater _inflater;


  public InvoiceListAdapter(Activity context,ArrayList<Object> itemList)
  {
      super();
      this._context=context;
      this._itemList=itemList;
      this._inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

  }
@Override
public int getCount() {
    // TODO Auto-generated method stub
    return _itemList.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return _itemList.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public static class ViewHolder
{
 TextView ProductName;
 TextView Qnt;
 TextView Price;
 Button Del;

}



@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    ViewHolder holder;
     if(convertView==null)
        {
            holder = new ViewHolder();
            convertView = _inflater.inflate(R.layout.custom_row_view, null);


            holder.ProductName = (TextView) convertView.findViewById(R.id.txt_CRow_ProdName);
            holder.Price = (TextView) convertView.findViewById(R.id.txt_CRow_Price);
            holder.Qnt = (TextView) convertView.findViewById(R.id.txt_CRow_Qnt);
            holder.Del = (Button) convertView.findViewById(R.id.btn_CRow_Delete);
            /*-----------------------------Deleting Item with Button--------------------*/
            holder.Del.setTag(holder);
            holder.Del.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(_context,"Item Deleted!", Toast.LENGTH_SHORT).show();

                    _itemList.remove(position);  
                    notifyDataSetChanged();

                    // TODO Auto-generated method stub

                }
            });

            convertView.setTag(holder);
        }
        else
        {
            holder=(ViewHolder)convertView.getTag();
        }

        AnItem Item = (AnItem) _itemList.get(position);

        holder.ProductName.setText(Item.getProductName());
        holder.Price.setText(Item.getPrice());
        holder.Qnt.setText(Item.getQnt());

        return convertView;


}
Run Code Online (Sandbox Code Playgroud)

nik*_*3ro 11

您可能在ScrollView中拥有该ListView.我只是浪费了2个小时,直到我偶然发现了这个答案:

为什么我的BaseAdapter类没有增加getView中的位置?