0

У меня есть динамическое CheckBoxes и теперь я хочу, чтобы проверить, какой CheckBox нажал или нет AdditionalInformation.Java файл Здесь Простой адаптер определяется:Как добавить Слушатель динамических флажков в простом адаптере

package com.example.ahmad.cvbuilder21; 
    import android.content.Intent; 
    import android.support.v7.app.ActionBarActivity; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.Gravity; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.widget.CheckBox; 
    import android.widget.ListView; 
    import android.widget.SimpleAdapter; 
    import android.widget.TextView; 
    import android.widget.Toast; 
    import java.util.ArrayList; 
    import java.util.HashMap; 
    import java.util.List; 


    public class AdditionalInformation extends ActionBarActivity { 

     CheckBox cb; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_additional_infromation); 

      cb=(CheckBox)findViewById(R.id.additionalchk); 
      ABC s = ABC.getSingletonObject(); 
      String[][] str = s.getString(); 
      ListView lv=((ListView)findViewById(R.id.additionallist)); 
      String[] additionalOptions={"Add your Picture","Add Experince/Project","Add Reference","Add Skills/Languages"}; 
      String[] txtViewNames={"options"}; 

      List<HashMap<String,String>>list=new ArrayList<HashMap<String, String>>(); 
      for (int i = 0; i < additionalOptions.length; i++) { 

       HashMap<String, String> map= new HashMap<String, String>(); 
       map.put("options", additionalOptions[i]); 
       list.add(map); 
      } 
        SimpleAdapter simpleAdpt = new SimpleAdapter(this, list, R.layout.mylayout2,txtViewNames , new int[] {R.id.additionaltxt1}); 
      lv.setAdapter(simpleAdpt); 

     } 


     public void additionalData(View view1) 
     { 

      if(cb.isChecked()) 
      { 
       cb.findViewById(R.id.additionalchk).setOnClickListener(
         new View.OnClickListener() { 
          @Override 
          public void onClick(View view) 
          { 
           Toast toast = Toast.makeText(getApplicationContext(), "Checked", 
             Toast.LENGTH_SHORT); 
           toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0); 
           toast.show(); 
          } 
         } 
       ); 
      } 
      else{} 



     } 

    } 

AdditionalInformation.xml file: где функция addData вызывается на , проверьте, какой CheckBox щелкнул.

<Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Choose Additional Options:" 
     android:id="@+id/additionalBtn" 
     /> 

    <ListView 
     android:layout_below="@id/additionalBtn" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/additionallist" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"></ListView> 
    <Button 

     android:layout_below="@id/additionallist" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Add to CV" 
     android:onClick="additionalData" 
     /> 
</RelativeLayout> 

mylayout2.xml файл, в котором я определить элементы управления для простого адаптера:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 
    <TextView 
     android:layout_alignParentLeft="true" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/additionaltxt1" 

     /> 
    <CheckBox 
     android:layout_alignParentRight="true" 
     android:layout_alignRight="@id/additionaltxt1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="false" 
     android:id="@+id/additionalchk" 
     /> 

</RelativeLayout> 
+0

Показать класс 'SimpleAdapter' –

+0

Я только что использовал SimpleAdapter в классе AdditionalInformation.Java, который опубликован. –

+0

вам нужно создать подкласс класса «BaseAdapter» на 'getView()' адаптере, который вам нужен для реализации 'Listener' на ваших' checkboxes' –

ответ

0

Что вам действительно нужно сделать, это создать пользовательский адаптер. В этом обычае вы можете прослушать событие checkbox в правильной позиции.

Вот пример:

public class ListEmployeesAdapter extends BaseAdapter { 
public List<Employees> items; 
Context c; 

public ListEmployeesAdapter(Context c, List<Employees> items) { 
    this.c = c; 
    this.items = items; 
} 

@Override 
public int getCount() { 
    return items.size(); 
} 

@Override 
public Object getItem(int position) { 
    return items.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     LayoutInflater mInflater = (LayoutInflater) 
       c.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     convertView = mInflater.inflate(R.layout.employee_item, null); 
    } 
    TextView name = (TextView) convertView.findViewById(R.id.name); 
    name.setText(items.get(position).name); 
    name.setOnCLickListener(new OnClickListener(){ 
    @Override 
    public void onClick(){ 
     //listen to the click 
     } 
    }); 
    return convertView; 
} 
} 

Просто замените макет с вами макет и вызова флажок вместо TextView и вы хорошо идти.

+0

Я сделал это ... Спасибо @Miriana Itani –

+0

Anytime @AhmadIrfan –

Смежные вопросы