2015-02-06 5 views
0

мой код выше создает таблицу с флажками и текстовыми полями внутри. подсчет и значения получены из базы данных MySQL по php-json. Все работает отлично. Проблема: В функции onClickSenden я хочу поэтапно проверять каждый созданный флажок, отмеченный флажком или отмеченный флажок, и сделать код в зависимости от.Как использовать динамически созданные флажки внутри таблицы

Невозможно setId (i), coz "i" - это итератор, а не int.

может помочь мне?

public class EinbuchungActivity extends Activity implements OnCheckedChangeListener { 
    String data = ""; 
    TableLayout tl; 
    TableRow tr; 
    TextView label; 
    CheckBox cb; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_einbuchen); 

     TextView tv = (TextView) findViewById(R.id.tvNutzer); 
     tv.setText(MainActivity.username); 
     TextView tv2 = (TextView) findViewById(R.id.tvKst); 
     tv2.setText(MainActivity.kst); 

     tl = (TableLayout) findViewById(R.id.maintable); 

     final GetDataFromDB getdb = new GetDataFromDB(); 
     new Thread(new Runnable() { 
      public void run() { 
       data = getdb.getDataFromDB(); 
       System.out.println(data); 

       runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         ArrayList<Users> users = parseJSON(data); 
         addData(users);      
        } 
       }); 

      } 
     }).start(); 
    } 

    public ArrayList<Users> parseJSON(String result) { 
     //Array-Liste erstellen mit definierter Arrayliste 
     ArrayList<Users> users = new ArrayList<Users>(); 
     try { 
      JSONArray jArray = new JSONArray(result); 
      //Array-Liste mit Daten füllen 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject json_data = jArray.getJSONObject(i); 
       Users user = new Users(); 
       user.setEan(json_data.getString("ean")); 
       user.setName(json_data.getString("name")); 
       user.setBetriebszahl(json_data.getString("betriebsdatenalt")); 
       users.add(user); 
      } 
     } catch (JSONException e) { 
      Log.e("log_tag", "Error parsing data " + e.toString()); 
     } 
     return users; 
    } 

    void addHeader(){ 
     /** Create a TableRow dynamically **/ 
     tr = new TableRow(this); 

     /** Creating a TextView to add to the row **/ 
     label = new TextView(this); 
     label.setText("Inventarnummer"); 
     label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
     label.setPadding(5, 5, 5, 5); 
     //label.setBackgroundColor(Color.RED); 
     LinearLayout Ll = new LinearLayout(this); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     params.setMargins(5, 5, 5, 5); 
     //Ll.setPadding(10, 5, 5, 5); 
     Ll.addView(label,params); 
     tr.addView((View)Ll); // Adding textView to tablerow. 

     /** Creating Qty Button **/ 
     TextView place = new TextView(this); 
     place.setText("Name"); 
     place.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
     place.setPadding(5, 5, 5, 5); 
     //place.setBackgroundColor(Color.RED); 
     Ll = new LinearLayout(this); 
     params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     params.setMargins(0, 5, 5, 5); 
     //Ll.setPadding(10, 5, 5, 5); 
     Ll.addView(place,params); 
     tr.addView((View)Ll); // Adding textview to tablerow. 

     // Add the TableRow to the TableLayout 
     tl.addView(tr, new TableLayout.LayoutParams(
       LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT)); 
    } 

    @SuppressWarnings({ "rawtypes" }) 
    public void addData(ArrayList<Users> users) { 
     addHeader();  
     for (Iterator i = users.iterator(); i.hasNext();) { 
      Users p = (Users) i.next(); 
      /** Create a TableRow dynamically **/ 
      tr = new TableRow(this); 
      /** Creating a Checkbox to add to the row **/ 
      CheckBox cb = new CheckBox(this); 
      cb.setOnCheckedChangeListener(this); 
      cb.setText(p.getEan()); 
      LinearLayout Ll1 = new LinearLayout(this); 
      Ll1.addView(cb); 
      tr.addView((View)Ll1); // Adding CheckBox to tablerow. 
      /** Creating a TextView to add to the row **/ 
      label = new TextView(this); 
      label.setText(p.getName()); 
      label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT)); 
      label.setPadding(5, 5, 5, 5); 
      label.setBackgroundColor(Color.GRAY); 
      LinearLayout Ll = new LinearLayout(this); 
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT); 
      params.setMargins(5, 2, 2, 2); 
      Ll.addView(label,params); 
      tr.addView((View)Ll); // Adding textView to tablerow. 

      // Add the TableRow to the TableLayout 
      tl.addView(tr, new TableLayout.LayoutParams(
        LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT)); 
     } 

    } 



    public void onClickSenden (View view) { 


    } 


} 
+0

Я уже дал вам полный код, что в вашем другом посте. Но вы даже не отреагировали. Это не путь. – greenapps

+0

Я использовал код ур, но он не работал, и это не полный код. я попытался перейти на мой код и дал его – hevilp

+0

Это тоже не путь. Вы должны были продолжить там, показывая, что вы пробовали. Затем попросил о помощи. Если бы вы действительно отказались от этого, вы бы не попросили то же самое здесь снова. – greenapps

ответ

0
CheckBox cb = new CheckBox(this); 
cb.setOnClickListener(this); 

Установите флажок идентификатор или тег во время его создания.

cb.setTag(someIdentifier); 

затем использовать метод

@Override 
public void onClick(View v) { 
       if (v.getTag.equals(someIdentifier)){ 
        //do stuff here 
        }  
       } 
+0

Неисправность getTag не может быть разрешена или не поле на коде @Override public void onClick (View v) { if (v.getTag. equals (someIdentifier)) { // делаю здесь здесь } } – hevilp

+0

получил работу с решением, основанным на этом – hevilp

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