0

我正在尝试删除动态创建的表行,但我无法获得正确的表行 id,我所有的表行都有相同的 id,我创建的更多,我的计数器设置了更高的 id,所有行都得到它......我会很感激任何帮助,我坚持了几天。我的方法很大,但我认为只有开始很重要。

 public void getRow(String klik, int brojkica)
{
    //db=openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
    db = INF.getReadableDatabase();
    int count = 0;
    Cursor cursor3 = db.rawQuery("select id,Artikl, CIJENA from Artikli where");
    System.out.println(counterko);
    counterko++;
    tr = new TableRow(this);
    tr.setClickable(true);
    tr.setBackgroundColor(Color.GRAY);

    tr.setId(500 + counterko);

    cursor3.moveToFirst();
    final TextView sifracolumn = new TextView(this);
    sifracolumn.setId(1000 + counterko);

    sifracolumn.setPadding(5, 5, 5, 5);
    sifracolumn.setText(String.valueOf(cursor3.getInt(0)));
    sifracolumn.setGravity(Gravity.CENTER | Gravity.BOTTOM);
    sifracolumn.setTextColor(Color.BLACK);
    tr.addView(sifracolumn);
    allIDs.add(sifracolumn);//////////////////////////////////////

    final TextView artiklcolumn = new TextView(this);
    artiklcolumn.setPadding(5, 5, 5, 5);
    artiklcolumn.setId(2000 + counterko);
    artiklcolumn.setClickable(true);
    artiklcolumn.setWidth(400);
    artiklcolumn.setText(cursor3.getString(1));
    artiklcolumn.setGravity(Gravity.CENTER | Gravity.BOTTOM);
    artiklcolumn.setTextColor(Color.BLACK);
    tr.addView(artiklcolumn);
    artiklcolumn.setOnClickListener(new View.OnClickListener()
    {

        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            //alert(tr.getId());
            alert(artiklcolumn.getId());
        }
    });
    final TextView cijenacolumn = new TextView(this);
    cijenacolumn.setId(3000 + count);
    cijenacolumn.setText(cursor3.getString(2));
    cijenacolumn.setWidth(120);
    cijenacolumn.setGravity(Gravity.CENTER | Gravity.BOTTOM);
    cijenacolumn.setTextColor(Color.BLACK);

    tr.addView(cijenacolumn);

    final EditText kolicinacolumn = new EditText(this);
    kolicinacolumn.setId(4000 + counterko);
    kolicinacolumn.setText("1");
    kolicinacolumn.setGravity(Gravity.CENTER | Gravity.BOTTOM);
    kolicinacolumn.setTextColor(Color.BLACK);

    allEds.add(kolicinacolumn);
    tr.addView(kolicinacolumn);

    final TextView iznoscolumn = new TextView(this);
    iznoscolumn.setId(5000 + counterko);
    iznoscolumn.setWidth(120);
    iznoscolumn.setText("");
    iznoscolumn.setTextColor(Color.BLACK);
    iznoscolumn.setGravity(Gravity.CENTER | Gravity.BOTTOM);
    tr.addView(iznoscolumn);
    allTexts.add(iznoscolumn);

    if (kolicinacolumn.getText().toString() == "1")
    {

        System.out.println("kme");
        iznoscolumn.setText(cijenacolumn.getText().toString());
    }
    zaplatiti();
    tl = (TableLayout) findViewById(R.id.tableLayout1);
    tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    count++;
    kolicinacolumn.addTextChangedListener(new TextWatcher()
    {


        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
            String kol = kolicinacolumn.getText().toString();
            if (TextUtils.isEmpty(kol))
            {
                try
                {
                    System.out.print("Stop it");
                } catch (NumberFormatException e)
                {
                    System.out.println("This is not a number");
                    System.out.println(e.getMessage());
                }
            } else
            {
                Float racunam = Float.valueOf(kol);
                Float racunam2 = Float.valueOf(cijenacolumn.getText().toString());
                Float reza = racunam * racunam2;
                iznoscolumn.setText(String.valueOf(reza));
            }
            zaplatiti();
        }

        public void afterTextChanged(Editable s)
        {
            // TODO Auto-generated method stub      
        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after)
        {
            //TODO 
        }
    });
}
4

4 回答 4

0

使用该.removeView()方法并作为参数使用要删除的表格行的索引,或向表格行添加唯一标签,稍后根据此标签将其删除。

于 2012-12-05T11:42:42.367 回答
0

还将 id 设置为每一行中的标签。删除唯一行时,然后使用 .removeView(view.getTag());

于 2012-12-05T12:17:09.350 回答
0
for(int i = 0, j < table.getChildCount(); i < j; i++){
    TableRow row = (TableRow) getChildAt(i);
    if(you can check something here) {
        removeViewAt(i);
        // or...
        removeView(row);
    }
}
于 2012-12-05T12:49:05.550 回答
0

好的,我解决了我的问题..第一个问题是

tr = new TableRow(this); 

我无法将 id 分配给我的表格行,因为 id 没有在我的方法中实例化它,所以首先要做的是

final TableRow tr = new TableRow(this);

然后我将 onclicklistener 放在我想要响应的列上并将其放入..

 artiklcolumn.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
TableRow km= (TableRow)findViewById(tr.getId());                
alert(km);

}

我在其中获取我的对象,将其发送到警报对话框,然后从那里删除它。

 public void delete(TableRow tr2){

 tl.removeView(tr2);       

 }
于 2012-12-06T08:59:53.747 回答