2012-04-03 46 views
8

獲取值我想選擇的項目在checkbox.But我只拿到了一些字母數字numbers.How我可以從複選框獲得所選項目的名稱的名稱如何從複選框中的Android

public View getView(int position, View convertView, ViewGroup parent) { 
     View view = null; 
     if (convertView == null) { 
      LayoutInflater inflator = context.getLayoutInflater(); 
      view = inflator.inflate(R.layout.customlistlayout, 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()); 


    enter code here 

       //System.out.println(itemname); 
         } 
        }); 
      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; 
    } 

回答

2

試試這個示例代碼..落實到你的代碼

public class Planets extends Activity { 
    private ListView mainListView ; 
    private Planet[] planets ; 
    private ArrayAdapter<Planet> listAdapter ; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listview); 

    // Find the ListView resource. 
    mainListView = (ListView) findViewById(R.id.mainListView); 

    // When item is tapped, toggle checked properties of CheckBox and Planet. 
    mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View item, 
           int position, long id) { 
     Planet planet = listAdapter.getItem(position); 
     planet.toggleChecked(); 
     PlanetViewHolder viewHolder = (PlanetViewHolder) item.getTag(); 
     viewHolder.getCheckBox().setChecked(planet.isChecked()); 
     } 
    }); 


    // Create and populate planets. 
    planets = (Planet[]) getLastNonConfigurationInstance() ; 
    if (planets == null) { 
     planets = new Planet[] { 
      new Planet("Mercury"), 
      new Planet("Venus"), 
      new Planet("Earth"), 
      new Planet("Mars"), 
      new Planet("Jupiter"), 
      new Planet("Saturn"), 
      new Planet("Uranus"), 
      new Planet("Neptune"), 
      new Planet("Ceres"), 
      new Planet("Pluto"), 
      new Planet("Haumea"), 
      new Planet("Makemake"), 
      new Planet("Eris") 
     }; 
    } 
    ArrayList<Planet> planetList = new ArrayList<Planet>(); 
    planetList.addAll(Arrays.asList(planets)); 

    // Set our custom array adapter as the ListView's adapter. 
    listAdapter = new PlanetArrayAdapter(this, planetList); 
    mainListView.setAdapter(listAdapter);  
    } 

    /** Holds planet data. */ 
    private static class Planet { 
    private String name = "" ; 
    private boolean checked = false ; 
    //public Planet() {} 
    public Planet(String name) { 
     this.name = name ; 
    } 
    /*public Planet(String name, boolean checked) { 
     this.name = name ; 
     this.checked = checked ; 
    }*/ 
    public String getName() { 
     return name; 
    } 
    /*public void setName(String name) { 
     this.name = name; 
    }*/ 
    public boolean isChecked() { 
     return checked; 
    } 
    public void setChecked(boolean checked) { 
     this.checked = checked; 
    } 
    public String toString() { 
     return name ; 
    } 
    public void toggleChecked() { 
     checked = !checked ; 
    } 
    } 

    /** Holds child views for one row. */ 
    private static class PlanetViewHolder { 
    private CheckBox checkBox ; 
    private TextView textView ; 
    //public PlanetViewHolder() {} 
    public PlanetViewHolder(TextView textView, CheckBox checkBox) { 
     this.checkBox = checkBox ; 
     this.textView = textView ; 
    } 
    public CheckBox getCheckBox() { 
     return checkBox; 
    } 
    /* public void setCheckBox(CheckBox checkBox) { 
     this.checkBox = checkBox; 
    }*/ 
    public TextView getTextView() { 
     return textView; 
    } 
    /*public void setTextView(TextView textView) { 
     this.textView = textView; 
    } */ 
    } 

    /** Custom adapter for displaying an array of Planet objects. */ 
    private static class PlanetArrayAdapter extends ArrayAdapter<Planet> { 

    private LayoutInflater inflater; 

    public PlanetArrayAdapter(Context context, List<Planet> planetList) { 
     super(context, R.layout.simplerow, R.id.rowTextView, planetList); 
     // Cache the LayoutInflate to avoid asking for a new one each time. 
     inflater = LayoutInflater.from(context) ; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Planet to display 
     Planet planet = (Planet) this.getItem(position);  
     CheckBox checkBox ; 
     TextView textView ;  

     if (convertView == null) { 
     convertView = inflater.inflate(R.layout.simplerow, null); 

     textView = (TextView) convertView.findViewById(R.id.rowTextView); 
     checkBox = (CheckBox) convertView.findViewById(R.id.CheckBox01); 
     convertView.setTag(new PlanetViewHolder(textView,checkBox)); 
     checkBox.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

      CheckBox cb = (CheckBox) v ; 
      Planet planet = (Planet) cb.getTag(); 
      planet.setChecked(cb.isChecked()); 

      if(cb.isChecked()){ 
       String s = planet.getName(); 
       System.out.println(s); 
      } 

      } 
     });   
     } 
    else {   
     PlanetViewHolder viewHolder = (PlanetViewHolder) convertView.getTag(); 
     checkBox = viewHolder.getCheckBox() ; 
     textView = viewHolder.getTextView() ; 
     } 
     checkBox.setTag(planet); 
     checkBox.setChecked(planet.isChecked()); 
     textView.setText(planet.getName());   
     return convertView; 
    } 
    } 
    public Object onRetainNonConfigurationInstance() { 
    return planets ; 
    } 
} 
4

我得到了這樣的事情:

CheckBox not = (CheckBox)findViewById(R.id.checkBox1); 
not.setChecked(my.notifications); 
not.setOnClickListener(new OnClickListener() 
{ 

    @Override 
    public void onClick(View v) 
    { 
     if (((CheckBox) v).isChecked()) 
     { 


     } 
     else 
     { 

     } 
    } 
}); 
-1

如果w ^螞蟻知道哪個複選框已被(未)檢查過,您可以爲每個複選框註冊一個新的偵聽器實例。

CheckBox one = (CheckBox)findViewById(R.id.checkBox1); 
one.setOnClickListener(new OnClickListener() 
{ 

    @Override 
    public void onClick(View v) 
    { 
     Log.d(TAG,"I am checkbox 1!"); 
    } 
    }); 

    CheckBox two = (CheckBox)findViewById(R.id.checkBox2); 
two.setOnClickListener(new OnClickListener() 
{ 

    @Override 
    public void onClick(View v) 
    { 
     Log.d(TAG,"I am checkbox 2!"); 
    } 
}); 
0

試試這個代碼:

String str = yourCheckbox.getText(); 
1

設置標籤像這樣賦予複選框也將其標記爲複選框,然後你可以在你的setOnClickListener訪問標籤名稱複選框

viewHolder.checkbox.setTag("Write here name"); 
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
    Model element = (Model) viewHolder.checkbox.getTag(); 
    element.setSelected(buttonView.isChecked()); 
    Log.v("Checked Name",buttonview.getTag().toString()); 
} 
});