我发送了一个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);
}
答案 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);
}