繁体   English   中英

删除Android中的Listview项目?

[英]Remove Listview Item in Android ?

我想从Android中的列表视图项中删除第0个位置。 我已经完成了从SQLite数据库填充列表视图的操作。但是现在我想从onCreate()方法的列表视图中删除第0个位置项。 我不知道该怎么办,我尝试过,但是我的应用程序崩溃了并且ArrayIndexOutOfBoundException Invallid Index 3(大小为3)出现异常。有人可以帮我弄清楚该怎么做。 多亏了欣赏。

这是我的适配器类代码。

public class EmployeeList_Adapter extends BaseAdapter
{
    Context context;
    ArrayList<Employee> Employee_List;

    protected SQLiteDatabase db;


    public EmployeeList_Adapter(Context context,
            ArrayList<Employee> employee_List) {
        super();
        this.context = context;
        Employee_List = employee_List;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        // TODO Auto-generated method stub
        Employee EmployeeListItems = Employee_List.get(position);
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.staff_employee_list_item, null);
        }

        TextView tvID = (TextView) convertView.findViewById(R.id.textViewStaff_emp_Id);
        tvID.setText(EmployeeListItems.getEmployeeId()+"");

        ImageView imgProfile = (ImageView) convertView.findViewById(R.id.imgStaff_Emp);


        TextView tvName = (TextView) convertView.findViewById(R.id.textViewStaff_Emp_ame);
        tvName.setText(EmployeeListItems.getName());

        TextView tvDepartment = (TextView) convertView.findViewById(R.id.textViewStaff_Emp_Department);
        tvDepartment.setText(EmployeeListItems.getDepartment());


        TextView tvDesignation = (TextView) convertView.findViewById(R.id.textViewStaff_Emp_Designation);
        tvDesignation.setText(EmployeeListItems.getDesignation());

        TextView tvPerformanceDate = (TextView) convertView.findViewById(R.id.textDate);
        tvPerformanceDate.setText(EmployeeListItems.getDate());

        TextView tvPerformanceRate = (TextView) convertView.findViewById(R.id.empLoyeeRate);
        tvPerformanceRate.setText(EmployeeListItems.getPerformancerate());

        final Employee empPOsition = Employee_List.get(position);
        int positionA = Employee_List.indexOf(empPOsition);

        notifyDataSetChanged();
        System.out.println(" empPOsition = " + positionA);

        if( positionA == 0)
        {
            Employee_List.remove(position);
        }

        return convertView;
    }

}


Here is my Log Cat Error


07-15 11:41:56.322: E/AndroidRuntime(651): FATAL EXCEPTION: main
07-15 11:41:56.322: E/AndroidRuntime(651): java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3
07-15 11:41:56.322: E/AndroidRuntime(651):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
07-15 11:41:56.322: E/AndroidRuntime(651):  at java.util.ArrayList.get(ArrayList.java:311)
07-15 11:41:56.322: E/AndroidRuntime(651):  at com.sqlitedemo.EmployeeList_Adapter.getView(EmployeeList_Adapter.java:49)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.AbsListView.obtainView(AbsListView.java:1430)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.ListView.makeAndAddView(ListView.java:1745)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.ListView.fillDown(ListView.java:670)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.ListView.fillFromTop(ListView.java:727)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.ListView.layoutChildren(ListView.java:1598)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.AbsListView.onLayout(AbsListView.java:1260)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.view.View.layout(View.java:7175)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.view.View.layout(View.java:7175)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.view.View.layout(View.java:7175)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.view.View.layout(View.java:7175)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1140)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.os.Looper.loop(Looper.java:123)
07-15 11:41:56.322: E/AndroidRuntime(651):  at android.app.ActivityThread.main(ActivityThread.java:3683)
07-15 11:41:56.322: E/AndroidRuntime(651):  at java.lang.reflect.Method.invokeNative(Native Method)
07-15 11:41:56.322: E/AndroidRuntime(651):  at java.lang.reflect.Method.invoke(Method.java:507)
07-15 11:41:56.322: E/AndroidRuntime(651):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-15 11:41:56.322: E/AndroidRuntime(651):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-15 11:41:56.322: E/AndroidRuntime(651):  at dalvik.system.NativeStart.main(Native Method)

检查是否有相反positionA检查position只和尝试后,除去膨胀布局和befor设置视图的数据。

尝试这个

public class EmployeeList_Adapter extends BaseAdapter
{
    Context context;
    ArrayList<Employee> Employee_List;

    protected SQLiteDatabase db;


    public EmployeeList_Adapter(Context context,
            ArrayList<Employee> employee_List) {
        super();
        this.context = context;
        Employee_List = employee_List;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        // TODO Auto-generated method stub

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.staff_employee_list_item, null);
        }
         if( position == 0)
        {
            Employee_List.remove(position);
        }

        Employee EmployeeListItems = Employee_List.get(position);
        TextView tvID = (TextView) convertView.findViewById(R.id.textViewStaff_emp_Id);
        tvID.setText(EmployeeListItems.getEmployeeId()+"");

        ImageView imgProfile = (ImageView) convertView.findViewById(R.id.imgStaff_Emp);


        TextView tvName = (TextView) convertView.findViewById(R.id.textViewStaff_Emp_ame);
        tvName.setText(EmployeeListItems.getName());

        TextView tvDepartment = (TextView) convertView.findViewById(R.id.textViewStaff_Emp_Department);
        tvDepartment.setText(EmployeeListItems.getDepartment());


        TextView tvDesignation = (TextView) convertView.findViewById(R.id.textViewStaff_Emp_Designation);
        tvDesignation.setText(EmployeeListItems.getDesignation());

        TextView tvPerformanceDate = (TextView) convertView.findViewById(R.id.textDate);
        tvPerformanceDate.setText(EmployeeListItems.getDate());

        TextView tvPerformanceRate = (TextView) convertView.findViewById(R.id.empLoyeeRate);
        tvPerformanceRate.setText(EmployeeListItems.getPerformancerate());

        final Employee empPOsition = Employee_List.get(position);
        int positionA = Employee_List.indexOf(empPOsition);

        notifyDataSetChanged();
        System.out.println(" empPOsition = " + positionA);



        return convertView;
    }

}

我认为这会起作用,谢谢;-)

尝试这个..

改变这个

Employee_List.remove(position);

Employee_List.remove(positionA);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM