значение столбца, которое не выводится в tablelayout

#android #button #tablelayout

#Android #кнопка #tablelayout

Вопрос:

в моем приложении я получаю значение с сервера и отображаю его в виде tablelayout. Я нигде не сохраняю значение. В начале каждой строки есть кнопка, и когда пользователь нажимает эту кнопку, значение первого столбца и первой строки должно быть вставлено в переменную. Я хочу сохранить значение поля с именем «product_code» в переменной to.

Моя проблема в том, что я пытаюсь извлечь значение поля, но ничего не печатается.

Событие onclick кнопки находится в конце программы, и я пометил его комментариями.

вот мой код

     public class FancyStock extends Activity implements View.OnClickListener {

        String data = "";
        TableLayout tl;
        TableRow tr;
        TextView label;

        ArrayList<Users_fancystock> users = new ArrayList<Users_fancystock>();



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

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

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

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                             users = parseJSON(data);
                            addData(users);
                        }
                    });

                }
            }).start();



        }

        public ArrayList<Users_fancystock> parseJSON(String result) {
            ArrayList<Users_fancystock> users = new ArrayList<Users_fancystock>();
            try {
                JSONArray jArray = new JSONArray(result);
                for (int i = 0; i < jArray.length(); i  ) {
                    JSONObject json_data = jArray.getJSONObject(i);
                    Users_fancystock user = new Users_fancystock();
                    user.setId(json_data.getInt("id"));
                    user.setProduct_code(json_data.getString("product_code"));
                    user.setShapes(json_data.getString("shaps"));
                    user.setPair(json_data.getString("pair"));
                    user.setCarats(json_data.getString("carats"));
                    user.setColor(json_data.getString("color"));
                    user.setClarity(json_data.getString("clarity"));
                    user.setService(json_data.getString("service"));
                    user.setPolish(json_data.getString("polish"));
                    user.setSymetric(json_data.getString("symetric"));
                    user.setTables(json_data.getString("tables"));
                    user.setMeasurements(json_data.getString("measurments"));
                    user.setFlourscne(json_data.getString("flourscne"));
                    user.setDescription(json_data.getString("description"));
                    user.setCerticated(json_data.getString("certificated"));
                    user.setCcode(json_data.getString("ccode"));
                    user.setCut(json_data.getString("cut"));
                    user.setTotal(json_data.getString("total"));
                    user.setFile(json_data.getString("file"));
                    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);

            TextView add = new TextView(this);
            add.setText("Add");
            add.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
            add.setPadding(5, 5, 5, 5);
            add.setBackgroundColor(Color.parseColor("#BDB76B"));
            LinearLayout Ll = new LinearLayout(this);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                    LayoutParams.WRAP_CONTENT);
            params.setMargins(0, 5, 5, 5);
            //Ll.setPadding(10, 5, 5, 5);
            Ll.addView(add,params);
            tr.addView((View)Ll);

            /** Creating a TextView to add to the row **/
            label = new TextView(this);
            label.setText("Product code");

            label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
            label.setPadding(5, 5, 5, 5);
            label.setBackgroundColor(Color.parseColor("#BDB76B"));
            Ll = new LinearLayout(this);
            params = new LinearLayout.LayoutParams(LayoutParams.MATCH_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 shapes = new TextView(this);
            shapes.setText("Shapes");
            shapes.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
            shapes.setPadding(5, 5, 5, 5);
            shapes.setBackgroundColor(Color.parseColor("#BDB76B"));
            Ll = new LinearLayout(this);
            params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
            params.setMargins(0, 5, 5, 5);
            //Ll.setPadding(10, 5, 5, 5);
            Ll.addView(shapes,params);
            tr.addView((View)Ll); // Adding textview to tablerow.

            TextView pair = new TextView(this);
            pair.setText("Shapes");
            pair.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            pair.setPadding(5, 5, 5, 5);
            pair.setBackgroundColor(Color.parseColor("#BDB76B"));
            Ll = new LinearLayout(this);
            params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
            params.setMargins(0, 5, 5, 5);
            //Ll.setPadding(10, 5, 5, 5);
            Ll.addView(pair,params);
            tr.addView((View)Ll); // Adding textview to tablerow.




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

        @SuppressWarnings({ "rawtypes" })
        public void addData(ArrayList<Users_fancystock> users) {

            addHeader();

            for (Iterator i = users.iterator(); i.hasNext();) {
                for (int j = 0; j < users.size(); j  ) {

                    Users_fancystock p = (Users_fancystock) i.next();

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

    ///-----------------------button initialization here-------------------------------------------------------
                    Button btn = new Button(this);
                    btn.setTag(j);
                    System.out.println(btn.getTag());

                    btn.setText("Add to Basket");
                    // btn.setTextSize();
                    btn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
                    // btn.setTag(mLinks.get(index));
                    btn.setOnClickListener(this);
                    LinearLayout Ll = new LinearLayout(this);
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                            LayoutParams.WRAP_CONTENT);
                    params.setMargins(5, 2, 2, 2);
                    params.width = 200;
                    params.height = 60;
                    // btn.setLayoutParams(new LinearLayout.LayoutParams(10, 100));
                    Ll.addView(btn, params);

                    tr.addView((View) Ll);


                    /** Creating a TextView to add to the row **/
                    label = new TextView(this);
                    label.setText(p.getproduct_code());
                    label.setId(p.getId());
                    label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT));
                    label.setPadding(5, 5, 5, 5);
                    ////label.setBackgroundColor(Color.parseColor("#BDB76B"));
                    Ll = new LinearLayout(this);
                    params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                            LayoutParams.WRAP_CONTENT);
                    params.setMargins(5, 2, 2, 2);
                    //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(p.getShapes());
                    place.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT));
                    place.setPadding(5, 5, 5, 5);
                    //  place.setBackgroundColor(Color.parseColor("#BDB76B"));
                    Ll = new LinearLayout(this);
                    params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                            LayoutParams.WRAP_CONTENT);
                    params.setMargins(0, 2, 2, 2);
                    //Ll.setPadding(10, 5, 5, 5);
                    Ll.addView(place, params);
                    tr.addView((View) Ll); // Adding textview to tablerow.

                    label = new TextView(this);
                    label.setText(p.getpair());
                    label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT));
                    label.setPadding(5, 5, 5, 5);
                    ////label.setBackgroundColor(Color.parseColor("#BDB76B"));
                    Ll = new LinearLayout(this);
                    params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                            LayoutParams.WRAP_CONTENT);
                    params.setMargins(5, 2, 2, 2);
                    //Ll.setPadding(10, 5, 5, 5);
                    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.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                }
            }
        }

///==============onclick event here---------------------------
        public void onClick(View v)
        {
          int k=(Integer)v.getTag();
            System.out.println("int k"  k);
            Users_fancystock rowRecord= users.get(k);
            System.out.println(rowRecord);


        }
    }
  

это то, что печатается. В последней строке выводится значение «rowrecord».

 07-07 11:00:58.452  10932-10982/com.diamond.traders D/dalvikvm﹕ GC_FOR_ALLOC freed 328K, 3% free 11906K/12264K, paused 16ms, total 16ms
07-07 11:00:58.492  10932-10982/com.diamond.traders I/System.out﹕ [{"id":"1","product_code":"qweq","shaps":"weqwe","pair":"qwe","carats":"qwe","color":"qwe","clarity":"qwe","service":"qwe","polish":"qwe","symetric":"eqwe","tables":"qweqqwew","measurments":"eqw","flourscne":"eqwwwfqw","description":"sfsafasfsa","certificated":"safas","ccode":"asf","cut":"asfas","total":"fa","file":"sfasf"},{"id":"2","product_code":"sdas","shaps":"das","pair":"das","carats":"fasfa","color":"sfasf","clarity":"asfas","service":"fas","polish":"sdg","symetric":"sdg","tables":"sdgsd","measurments":"gsdgsdgsd","flourscne":"sdgsdg","description":"sdgsdg","certificated":"sdgs","ccode":"dgsd","cut":"dsdgsdg","total":"sdgsdg","file":"sdgsdgtrurt"}]
07-07 11:00:58.512  10932-10932/com.diamond.traders I/System.out﹕ 0
07-07 11:00:58.522  10932-10932/com.diamond.traders I/System.out﹕ 1
07-07 11:00:59.273  10932-10932/com.diamond.traders I/System.out﹕ int k0
07-07 11:00:59.273  10932-10932/com.diamond.traders I/System.out﹕ com.diamond.traders.Users_fancystock@421c7998
  

Комментарии:

1. Помогает ли это, если вы используете like, System.out.println(rowRecord.getId()); System.out.println(rowRecord.getProductCode()); ? Вам нужно будет сгенерировать параметр getter setter в классе Users_fancystock

2. позвольте мне попробовать, и я дам вам знать

3. Это сработало идеально. Спасибо. я использовал System.out.println(rowRecord.getproduct_code()); и получил результат, как и ожидалось. Большое вам спасибо.

4. Отлично. Я добавил ответ 🙂 удачного кодирования.

5. Только один неприятный вопрос, я хочу отправить это значение с помощью Json, не могли бы вы сказать мне, как преобразовать rowRecord.getProductCode() в строку. Я знаю, как использовать JSON, но я всегда отправляю строковое значение

Ответ №1:

Вы пытаетесь напечатать объект класса напрямую. Таким образом, он просто выдает вывод в виде : com.diamond.traders.Users_fancystock@421c7998

Используйте его следующим образом:

 public class Users_fancystock{

    String id;
    String productCode;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getProductCode() {
        return productCode;
    }
    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

}
  

Для печати:

 Users_fancystock rowRecord= users.get(k);
System.out.println(rowRecord.getProductCode());
  

Это должно сработать.

Комментарии:

1. это то, что я сделал, и это сработало, спасибо за ответ. Только один неприятный вопрос, я хочу отправить это значение с помощью Json, не могли бы вы сказать мне, как преобразовать rowRecord.getProductCode() в строку. Я знаю, как использовать JSON, но я всегда отправляю строковое значение.

2. rowRecord.getProductCode() является только строкой. Просто используйте String code = rowRecord.getProductCode(); , и вы получите готовый к использованию строковый код. @SamvidKulkarni

3. @SamvidKulkarni Как вы переходите на JSON?

4. httpclient=новый DefaultHttpClient(); httppost= новый HttpPost(» 192.168.0.105/test/registration.php » ); nameValuePairs = новый список массивов<NameValuePair>(); nameValuePairs.add(новая базовая пара значений(«код продукта», значение. toString().trim())); httppost.setEntity(новый UrlEncodedFormEntity(nameValuePairs)); response=httpclient.execute(httppost);

5. @SamvidKulkarni хорошо, так в чем проблема с этим?