将Delete按钮添加到数据绑定ListView

时间:2013-05-23 21:39:35

标签: android listview

我创建了一个ListView并将其绑定到适配器以显示表中的数据。它很棒。我可以选择一行,它显示我正在选择的产品名称。现在我在布局中添加了一个ImageView,它将作为每行的删除按钮。我的问题是我无法弄清楚如何添加代码使其成为当用户选择ImageView(删除按钮)时,它将删除该行。我搜索过并发现了很多关于这个主题的文章,并尝试了很多文章,没有一个真正适用于我的代码。我是否需要创建getView功能?我也尝试插入getTag(),但我无法使其正常工作。你能帮我一个可能与我的简单代码一起使用的示例代码,还是指向正确的方向?这是我的代码:

private void displayListView() {       
    prodinputHelper = new DBAdaptorProductInput(this);   
    prodinputHelper.open();     
    Cursor cursor = prodinputHelper.fetchAllProductInput();     
    // The desired columns to be bound   
    String[] columns = new String[] {     
            DBAdaptorProductInput.KEY_PRODUCTTYPE,     
            DBAdaptorProductInput.KEY_PRODUCTNAME,     
            DBAdaptorProductInput.KEY_MANUFACTURER,     
            DBAdaptorProductInput.KEY_VISC40,     
            DBAdaptorProductInput.KEY_VISC100,     
            DBAdaptorProductInput.KEY_VI,     
            DBAdaptorProductInput.KEY_DEN15C,     
            DBAdaptorProductInput.KEY_VISCTEXT,     
            DBAdaptorProductInput.KEY_BASEOILTYPE,     
            DBAdaptorProductInput.KEY_BASEOIL,     
            DBAdaptorProductInput.KEY_ADDITIVES,     
            DBAdaptorProductInput.KEY_OTHERADDITIVES,     
            DBAdaptorProductInput.KEY_THICKENER,     
            DBAdaptorProductInput.KEY_NLGI,     
            DBAdaptorProductInput.KEY_COMMENT,     
            DBAdaptorProductInput.KEY_PACKAGES,     
            DBAdaptorProductInput.KEY_AREA,     
    };     
    // the XML defined views which the data will be bound to   
    int[] to = new int[] {      
            R.id.code,     
            R.id.name,     
            R.id.manufacturer,     
            R.id.visc40,     
            R.id.visc100,     
            R.id.viscindex,     
            R.id.den15c,     
            R.id.visctext,     
            R.id.baseoiltype,     
            R.id.baseoil,     
            R.id.additives,     
            R.id.otheradditives,     
            R.id.thickener,     
            R.id.nlgi,     
            R.id.comments,     
            R.id.packages,     
            R.id.area,     
    };     
    // create the adapter using the cursor pointing to the desired data    
    //as well as the layout information   
    dataAdapter = new SimpleCursorAdapter(     
            this, R.layout.activity_product_review_info, cursor, columns, to, 0);     

    ListView listView = (ListView) findViewById(R.id.listView1);   
    // Assign adapter to ListView   
    listView.setAdapter(dataAdapter); 

    //SetOnItemClickListener for the ListView
    listView.setOnItemClickListener(new OnItemClickListener() {  
    @Override   
    public void onItemClick(AdapterView<?> listView, View view,       
            int position, long id) {    

        // Get the cursor, positioned to the corresponding row in the result set    
        Cursor cursor = (Cursor) listView.getItemAtPosition(position);      
        // Get the Customer Name from this row in the database.    
        String countryCode = cursor.getString(cursor.getColumnIndexOrThrow("ProductName"));    

        Toast.makeText(getApplicationContext(), countryCode, Toast.LENGTH_SHORT).show();      

        }   

    });
}

1 个答案:

答案 0 :(得分:1)

您需要具有扩展BaseAdapterSimpleCursorAdapter的自定义适配器 在适配器的getView()方法中为onClickListener设置ImageView