如何到达inflater中的对象

时间:2013-09-30 00:19:57

标签: android seekbar layout-inflater

我发送了一个infalter,每个inflater有一行有搜索栏和textviews。我无法弄清楚如何到达第二行的搜索栏。我写了一个seekOnChangeListener,但它只适用于infalter中的最后一个搜索栏。如何到达其他行的对象?

            @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            int barChosen = seekBar.getId();
            // TODO Auto-generated method stub
            float changePerPersonTip = Float.parseFloat(tipTotal);
            changePerPersonTip  *= progress;
            changePerPersonTip  /= 100;
            changePerPersonTip = (float) (Math.round(changePerPersonTip * 100.0) / 100.0);
            String changeInPerPerson = Float.toString(changePerPersonTip);
            tipPerPerson.setText(changeInPerPerson);

        }

1 个答案:

答案 0 :(得分:0)

你说“每一行”,你是否从列表视图或表格布局的布局中膨胀?

你可以这样:

private class ViewHolderRowItem{
    SeekBar sb;
    TextView txt1;
    TextView txt2;///...etc
    View layout;///...a container if needed
}

在适配器的getView方法中(例如,对于列表视图),您可以:

    public View getView(final int position, View convertView, ViewGroup parent) {

        ViewHolderRowItem holder;
        if (convertView == null) {
            convertView = getLayoutInflater().inflate(R.layout.data_row_item, parent, false);

            holder = new ViewHolderGridItem();
            holder.sb = (SeekBar) convertView.findViewById(R.id.sb);
            holder.txt1 = (TextView) convertView.findViewById(R.id.txt1);
            holder.txt2 = (TextView) convertView.findViewById(R.id.txt1);
        }
     }

对于TableLayout方法(您知道布局的列和行),例如(3列),您可以使用方法getChildCount()getChildAt()来检索表的每个单元格:

TableLayout tbL = (TableLayout) findViewById(R.id.tbL);
TableRow row1=(TableRow)tbL.getChildAt(0);
SeekBar sb1=(SeekBar) row1.getChildAt(0);
TextView txt1_1=(TextView) row1.getChildAt(1);
TextView txt1_2=(TextView) row1.getChildAt(2);
..etc

您可以像这样迭代表格的不同行:

for(int i=0;i<tbL.getChildCount();++i){
 TableRow row= (TableRow) tbL.getChildAt(i);
 SeekBar sb=(SeekBar) row.getChildAt(0);
 TextView txt1=(TextView) row.getChildAt(1);
 TextView txt2=(TextView) row.getChildAt(2);
}