2013-09-30 17 views
0

嘿,在我的代码中,我有一个表,它正在通过我调用的方法动态填充。添加时表行都有我想显示每个特定行时,其点击和所有其他人仍然藏在这里是使用这种方法,我能够创造出我的代码Android显示屏表格中的隐形视图

public void createTable(String itemName,String itemQuantity,String itemPrice,String itemAmount){ 
    final TableRow tr1 = new TableRow(getApplicationContext()); 
    tr1.setId(id); 
    tr1.setClickable(true); 

    tr1.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
     for(int i = 0;i<lytTableData.getChildCount();i++){ 
     tr1.getChildAt(4).setVisibility(View.INVISIBLE); 
     } 
     tr1.getChildAt(4).setVisibility(View.VISIBLE); 
     } 

    }); 

    tr1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 
    EditText textViewItemQuantity; 
    TextView textViewItemName,textViewItemPrice,textViewItemAmount; 

    textViewItemName= new TextView(this);textViewItemQuantity= new EditText(this);textViewItemPrice= new TextView(this);textViewItemAmount= new TextView(this); 
    iv2 = new ImageView(this); 
    textViewItemName.setWidth(500);textViewItemQuantity.setWidth(100);textViewItemPrice.setWidth(100);textViewItemAmount.setWidth(100); 
    textViewItemName.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize), LayoutParams.WRAP_CONTENT, 6f)); 
    textViewItemQuantity.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize2), LayoutParams.WRAP_CONTENT, 1f)); 
    textViewItemPrice.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize2), LayoutParams.WRAP_CONTENT, 1f)); 
    textViewItemAmount.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize2), LayoutParams.WRAP_CONTENT, 1f)); 
    textViewItemName.setText(itemName);textViewItemQuantity.setText(itemQuantity);textViewItemPrice.setText(itemPrice);textViewItemAmount.setText(itemAmount); 
    textViewItemQuantity.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); textViewItemPrice.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); 
    textViewItemName.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); textViewItemAmount.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); 
    textViewItemName.setTextColor(0xFF121212);textViewItemQuantity.setTextColor(0xFF121212);textViewItemPrice.setTextColor(0xFF121212);textViewItemAmount.setTextColor(0xFF121212); 
    textViewItemName.setPadding(0, 15, 5, 0);textViewItemQuantity.setPadding(0, 15, 5, 0);textViewItemPrice.setPadding(0, 15, 5, 0);textViewItemAmount.setPadding(0, 15, 5, 0); 
    textViewItemQuantity.setBackgroundColor(android.R.color.transparent); 
    iv2.setLayoutParams(new TableRow.LayoutParams((int) LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f)); 
    iv2.setImageResource(R.drawable.delete); 
    iv2.setVisibility(View.INVISIBLE); 
    textViewItemQuantity.setOnClickListener(editTextRows); 
    tr1.addView(textViewItemName);tr1.addView(textViewItemQuantity);tr1.addView(textViewItemPrice);tr1.addView(textViewItemAmount);tr1.addView(iv2); 
    lytTableData.addView(tr1, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
    Double intItemAmount = Double.parseDouble(itemAmount); 
    intTotalAmount = intTotalAmount + intItemAmount; 
    intTotalAmount2 = intTotalAmount2 + intItemAmount; 
    txtTotal.setText(String.valueOf(intTotalAmount)); 
    //txtDiscount.setText("0"); 
    txtAmount.setText(String.valueOf(intTotalAmount)); 
    id = id + 1; 
     System.out.println(tr1.getId()); 
} 

一种无形的看法每次我把它称为新行 我可能会错过什么,以使其工作只是为了清楚什么是不工作的是它显示的隐形视图的显示,但不是我想要的方式。我希望它显示在点击的行上,其余所有元素保持不可见状态,并且当另一行被点击时,它将被显示,其余所有其他元素将不可见

回答

0

好,我终于能够弄明白感谢所有谁试图这里就是答案

public void createTable(String itemName,String itemQuantity,String itemPrice,String itemAmount){ 
    final TableRow tr1 = new TableRow(getApplicationContext()); 
    tr1.setId(id); 
    tr1.setClickable(true); 

    tr1.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 


     TableRow vi = (TableRow) lytTableData.getChildAt(lytTableData.indexOfChild(tr1)); 
     for(int i = 0;i<lytTableData.getChildCount();i++){ 
      TableRow vi2 = (TableRow) lytTableData.getChildAt(i); 
      vi2.getChildAt(4).setVisibility(View.INVISIBLE); 
      }  
     vi.getChildAt(4).setVisibility(View.VISIBLE); 
     } 

    }); 

    tr1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 
    TextView textViewItemName,textViewItemPrice; 

    textViewItemName= new TextView(this);textViewItemQuantity= new EditText(this);textViewItemPrice= new TextView(this);textViewItemAmount= new TextView(this); 
    iv2 = new ImageView(this); 
    textViewItemName.setWidth(500);textViewItemQuantity.setWidth(100);textViewItemPrice.setWidth(100);textViewItemAmount.setWidth(100); 
    textViewItemName.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize), LayoutParams.WRAP_CONTENT, 6f)); 
    textViewItemQuantity.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize2), LayoutParams.WRAP_CONTENT, 1f)); 
    textViewItemPrice.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize2), LayoutParams.WRAP_CONTENT, 1f)); 
    textViewItemAmount.setLayoutParams(new TableRow.LayoutParams((int) getResources().getDimension(R.dimen.textsize2), LayoutParams.WRAP_CONTENT, 1f)); 
    textViewItemName.setText(itemName);textViewItemQuantity.setText(itemQuantity);textViewItemPrice.setText(itemPrice);textViewItemAmount.setText(itemAmount); 
    textViewItemQuantity.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); textViewItemPrice.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); 
    textViewItemQuantity.setInputType(InputType.TYPE_CLASS_NUMBER); 
    textViewItemName.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); textViewItemAmount.setTextAppearance(getApplicationContext(), android.R.style.TextAppearance_Large); 
    textViewItemName.setTextColor(0xFF121212);textViewItemQuantity.setTextColor(0xFF121212);textViewItemPrice.setTextColor(0xFF121212);textViewItemAmount.setTextColor(0xFF121212); 
    textViewItemName.setPadding(0, 15, 5, 0);textViewItemQuantity.setPadding(0, 15, 5, 0);textViewItemPrice.setPadding(0, 15, 5, 0);textViewItemAmount.setPadding(0, 15, 5, 0); 
    textViewItemQuantity.setBackgroundColor(0x0000000000); 
    iv2.setLayoutParams(new TableRow.LayoutParams((int) LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f)); 
    iv2.setImageResource(R.drawable.delete); 
    iv2.setVisibility(View.INVISIBLE); 
    iv2.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      lytTableData.removeView(tr1); 
     } 

    }); 
    tr1.addView(textViewItemName);tr1.addView(textViewItemQuantity);tr1.addView(textViewItemPrice);tr1.addView(textViewItemAmount);tr1.addView(iv2); 
    lytTableData.addView(tr1, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

    Double intItemAmount = Double.parseDouble(itemAmount); 
    intTotalAmount = intTotalAmount + intItemAmount; 
    //intTotalAmount2 = intTotalAmount2 + intItemAmount; 
    txtTotal.setText(String.valueOf(intTotalAmount)); 
    //txtDiscount.setText("0"); 
    txtAmount.setText(String.valueOf(intTotalAmount)); 
    id = id + 1; 
     System.out.println(tr1.getId()); 
} 
0

您可以通过定义动态布局(您想要的显示在点击)列表视图的行布局文件中,保持其不可见/默认情况下,并将其标记为可见列表视图的onItemClickListener事件上单击行。 希望这对你有所帮助。

如果您使用的是基础适配器,那么解决此问题会更好。

+0

我很抱歉,我并不清楚在此我使用一个表布局不是列表视图 – user1534409