-1

У меня есть линейное расположение с настраиваемыми элементами, как изображение:Как получить доступ к элементам childview из линейной очереди в android?

enter image description here

, которая заполнена WebService, как я могу получить доступ к «удалить» textview и радио-кнопки для выполнения onclick и onchecked слушатели?

Моя активность начинает загружать данные веб-службы и помещает линейный макет «n» дочерних элементов каждого ответа, который поступает из веб-службы, я хочу включить клик и проверил слушателей в зависимости от положения ребенка в Посмотреть список.

Thnx.

Адаптер.

public class NewPaymentsAdapter extends ArrayAdapter<Payments> { 

    private ViewHolder holder; 

    public NewPaymentsAdapter(Context context, ArrayList<Payments> newpayments) { 
     super(context, 0, newpayments); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final Payments payments = getItem(position); 
     if (convertView == null){ 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.new_payments_item, parent, false); 
      holder = new ViewHolder(); 
      holder.rbPayments = (RadioButton) convertView.findViewById(R.id.rbPayments); 
      holder.tvPaymentsDelete = (MyTitleFontTextView) convertView.findViewById(R.id.tvPaymentsDelete); 
      holder.tvPaymentsTitle = (MyTitleFontTextView) convertView.findViewById(R.id.tvPaymentsTitle); 
      holder.tvPaymentsDesc = (MyFontTextView) convertView.findViewById(R.id.tvPaymentsDesc); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.tvPaymentsTitle.setText("Tarjeta"); 
     holder.tvPaymentsDesc.setText("**** **** **** " + payments.getLastfour()); 
     if (Boolean.parseBoolean(payments.getIsdefault()) == true){ 
      holder.rbPayments.setChecked(true); 
     } else { 
      holder.rbPayments.setChecked(false); 
     } 
     return convertView; 
    } 

    private class ViewHolder { 
     RadioButton rbPayments; 
     MyTitleFontTextView tvPaymentsDelete, tvPaymentsTitle; 
     MyFontTextView tvPaymentsDesc; 
    } 

Parser

public ArrayList<Payments> parseNewPayments(String response, ArrayList<Payments> list) { 

     try { 
      JSONObject jsonObject = new JSONObject(response); 
      if (jsonObject.getBoolean(KEY_SUCCESS)) { 
       JSONArray jsonArray = jsonObject.getJSONArray("payments"); 
       if (jsonArray.length() > 0) { 
        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject object = jsonArray.getJSONObject(i); 

         Payments newpayments = new Payments(); 

         newpayments.setId(object.getInt("id")); 
         newpayments.setLastfour(object.getString("last_four")); 
         newpayments.setIsdefault(object.getString("is_default")); 
         list.add(newpayments); 
        } 
       } 

      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return list; 
    } 

Модель

public class Payments { 

    private int id; 
    private String isdefault, lastfour; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getLastfour() { 
     return lastfour; 
    } 

    public void setLastfour(String lastfour) { 
     this.lastfour = lastfour; 
    } 

    public String getIsdefault() { 
     return isdefault; 
    } 

    public void setIsdefault(String isdefault) { 
     this.isdefault = isdefault; 
    } 

    } 

активность

this.pContent.parseNewPayments(response, newPaymentsList); 
        newPaymentsAdapter.notifyDataSetChanged(); 
        adaptercount = Integer.valueOf(newPaymentsAdapter.getCount()); 
        for (int i = 0; i < adaptercount; i++) { 
         View item = newPaymentsAdapter.getView(i, null, null); 
         layNewPayments.addView(item); 
        } 

Вот мой код, дисплеи деятельности правильно данные с WS, теперь с этим я хотите сделать «удалить» й «выберите по умолчанию» метод с TextView и радио-кнопки, передавая из параметров

Card card = new Card(), 
id = card.getid() 

и выполнение POST HTTP, но я не могу получить доступ к кнопке ребенок TextView или радио, чтобы выполнить это.

+0

Пожалуйста, добавьте соответствующий код. –

+0

Есть ли причина, по которой «ListView» не может быть использован? – jaibatrik

+0

Я не использую listview, потому что, когда я делаю изменение в переключателе, а затем прокручиваю его, он потерял проверенное значение (перерабатывает), а с Linearlayout у меня нет этой проблемы –

ответ

0

Вы можете использовать метод findViewById класса View.

Например,

LinearLayout ll = findViewById(R.id.parentLayout); 
int childcount = ll.getChildCount(); 
for (int i=0; i < childcount; i++){ 
    LinearLayout l = (LinearLayout) ll.getChildAt(i); 
    TextView delete = (TextView) l.findViewById(R.id.delete); 

    delete.setOnClickListener(...); 
} 
+0

Это нормально, но это дает мне доступ только тогда, когда У меня есть только один ребенок, но некоторые значения меняются в моем коде, когда у меня больше. –

+0

Обновлен ответ. – jaibatrik

+0

Спасибо, он отлично работает! –

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