2012-06-20 108 views
0

在我的項目有它包含的TextView一個ListView和checkbox..Here是我listactivity類:選擇複選框時如何刪除列表項?

package com.pack.custom; 

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

public class DemolistActivity extends ListActivity { 
    /** Called when the activity is first created. */ 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    // Create an array of Strings, that will be put to our ListActivity 
    ArrayAdapter<Model> adapter = new MyArrayAdapter(this, 
    getModel()); 
    setListAdapter(adapter); 
    } 
    private List<Model> getModel() { 
    List<Model> list = new ArrayList<Model>(); 
    list.add(get("Bangladesh")); 
    list.add(get("India")); 
    list.add(get("China")); 
    list.add(get("Japan")); 
    list.add(get("Australia")); 
    list.add(get("Denmark")); 
    list.add(get("Germany")); 
    list.add(get("Indonesia")); 
    // Initially select one of the items 
    list.get(1).setSelected(true); 
    return list; 
    } 
    private Model get(String s) { 
    return new Model(s); 
    } 
} 

這裏是myarrayadapter類:

package com.pack.custom; 

import java.util.List; 

import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MyArrayAdapter extends ArrayAdapter<Model> { 
    private final List<Model> list; 
    private final Activity context; 

    public MyArrayAdapter(Activity context, List<Model> list) { 
     super(context, R.layout.rowbuttonlayout, list); 
     this.context = context; 
     this.list = list; 
    } 

    static class ViewHolder { 
     protected TextView text; 
     protected CheckBox checkbox; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = null; 
     if (convertView == null) { 
      LayoutInflater inflator = context.getLayoutInflater(); 
      view = inflator.inflate(R.layout.rowbuttonlayout, null); 
      final ViewHolder viewHolder = new ViewHolder(); 
      viewHolder.text = (TextView) view.findViewById(R.id.label); 
      viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check); 
      viewHolder.checkbox 
        .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
         @Override 
         public void onCheckedChanged(CompoundButton buttonView, 
           boolean isChecked) { 
          Model element = (Model) viewHolder.checkbox 
            .getTag(); 
         element.setSelected(buttonView.isChecked()); 
         } 
        }); 
      view.setTag(viewHolder); 
      viewHolder.checkbox.setTag(list.get(position)); 
     } else { 
      view = convertView; 
      ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position)); 
     } 
     ViewHolder holder = (ViewHolder) view.getTag(); 
     holder.text.setText(list.get(position).getName()); 
     holder.checkbox.setChecked(list.get(position).isSelected()); 
     return view; 
    } 
} 

現在我想,當我選擇checbox然後這種特定的列表項是deleted.How我能做到這一點?請幫助

enter image description here

+0

list.remove(position); –

+0

你可以發佈你的Model類代碼,所以我可以試試這個代碼.. – user370305

回答

1

次嘗試是代碼,並讓我知道發生了什麼...

viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
@Override 
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
    if(isChecked) 
     { 
     if(list.getCount() > position) 
     { 
     list.remove(position); 
     this.notifyDataSetChanged(); 
     } 
     } 
    else 
    { 
     Log.e("CheckBox", isChecked+""); 
    } 
    } 
}); 
+0

我在我的項目中添加了這段代碼。但是當我第一次運行這個項目並檢查oneitem時,它完全刪除了這個項目。但是當我想刪除另一個它不工作.. :( –

+0

同樣的事情發生.. :( –

+0

當我刪除一個項目第一次它刪除,但是當我想刪除另一個它刪除另一個項目,選中.. –