如何将计数器值分配给可扩展列表视图按钮

时间:2018-10-05 06:25:33

标签: android expandablelistview

我有可扩展的列表视图,每个视图都有按钮。我需要为每个按钮(例如button1(计数0),button1(计数1),button1(计数2))设置一个标记。......我每次都尝试递增计数,但是它设置了一些随机计数器值。

我怀疑我在错误的地方做计数器++,请有人建议我可以在其中增加计数器值。

通用分配计数器:

int counter = 0;

在getChildView()方法中

 @Override
public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
   if (view == null) {
        holder = new ViewHolder();
        LayoutInflater parentInflater = (LayoutInflater) mctx.getSystemService(mctx.LAYOUT_INFLATER_SERVICE);
        view = parentInflater.inflate(R.layout.itemname_child_layout, null);
        holder.button = view.findViewById(R.id.childrecordbtn);
 } else {
        holder = (ViewHolder) view.getTag();
 }

 holder.button.setTag(counter);

 holder.button..setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
          int tag = view.getTag();
          Log.i("Tag Value = ",tag);
        }
 }
 counter++;
 return view;
}

上面的代码在单击按钮后会返回一些随机值。

输出:

Button1 : "Tag Value : 24"
Button2 : "Tag Value : 25"
Button3 : "Tag Value : 113"

1 个答案:

答案 0 :(得分:0)

看看getChildView()的定义:

getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)

这意味着在您的代码中,igroupPosition,而i1childPosition。您应该仅依靠这些参数来确定每一行的内容,而不是使用外部计数器。

您可以通过以下计算获得一维数组索引:

int sum = 0;
for(int j = 0;j < i; j++)
{
       sum += getChildrenCount(j);
}
final int arrayIndex = sum + i1;
holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.i("Tag Value = ",arrayIndex);
        }
 }