2015-11-28 1 views
0

У меня есть список с кнопкой переключателя в каждой строке. Я храню сумму проверенных переключателей в переменной. В MainActivity, где я запускаю пользовательский адаптер, я хочу получить сумму проверенных переключателей. Итак, как передать значение из пользовательского адаптера в родительскую активность? В нижнем колонтитуле listview у меня есть кнопка «Dalej», которую я создал в MainActivity, и хочу получить значение (эту сумму) от адаптера, когда пользователь нажимает на него?Кнопка нижнего колонтитула в списке, как получить значение из адаптера пользовательского списка

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cardio); 
    String[] cardio_1 = getResources().getStringArray(R.array.cardio_1); 
    ListView listView = (ListView) findViewById(R.id.listView); 

    View footer = getLayoutInflater().inflate(R.layout.cardio_footer, null); 
    listView.addFooterView(footer); 
    ListAdapter listAdapter = new Adapter_cardio(this, cardio_1); 
    cardio.addAll(Arrays.asList(cardio_1)) 
    listView.setAdapter(listAdapter); 

    final Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

    }); 

адаптер

public Adapter_cardio(Context context, String[] cardios) { 

    super(context, R.layout.cardio_row, cardios); 
    this.context = context; 
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    Log.d("TAG", "tessst1"); 
    zaznaczone = new ArrayList(); 
} 

public String suma(String sum) { 
    return sum; 
} 
@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    final ViewHolder holder; 
    String pytanie = getItem(position); 


    if (convertView==null){ 
     convertView = inflater.inflate(R.layout.cardio_row, null); 
     holder = new ViewHolder(); 
     holder.question = (TextView) convertView.findViewById(R.id.question); 
     holder.s = (Switch)convertView.findViewById(R.id.switch1); 
     convertView.setTag(holder); 
    } 
    else{ 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.question.setText(pytanie); 
    //Model_cardio question = getItem(position); 
    //final boolean doCheck = (position == 4) || (position == 5); 


    holder.s.setTag(position); 
    holder.s.setOnCheckedChangeListener(null); 
    if (zaznaczone.contains(position)) 
    { 
     holder.s.setChecked(true); 
    } 
    else 
    { 
     holder.s.setChecked(false); 
    } 

    holder.s.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       zaznaczone.add((Integer) buttonView.getTag()); 
      } else { 
       zaznaczone.remove((Integer) buttonView.getTag()); 
      } 

     } 
    }); 
    sum = zaznaczone.size(); 
    String x = "2"; 
    Log.d("TAG_Switch_all", "suma = " + sum); 

    return convertView; 
} 

ответ

1

хотят получить значение (эта сумма) от адаптера, когда пользователь нажимает на нее?

Создать метод как public, которые возвращают sum из Adapter_cardio класса как:

public int getSum(){ 

return zaznaczone.size(); 
} 

и вызывать getSum метод на кнопки мыши, используя listAdapter объект как:

public void onClick(View v) { 
    Log.d("TAG_Switch_all", "suma = " + ((Adapter_cardio)listAdapter).getSum()); 
} 

если listAdapter не доступен внутри onClick затем объявите его как final

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