0

我发送了一个infalter,每个inflater 都有一行有seekbar 和textviews。我不知道如何到达第二排的搜索栏。我写了一个 seekOnChangeListener,但它只适用于 infalter 中的最后一个 seekbar。如何获取其他行中的对象?

            @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);

        }
4

1 回答 1

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);
}
于 2013-09-30T00:32:27.540 回答