Android 可扩展列表视图中的递增和递减

Android 可扩展列表视图中的递增和递减,android,Android,我已创建expandablelisview。如果单击子项中的plus imageview,则count的值将增加1。最初,所有子项的计数值均为0。如果我单击第一行中的加号,计数值将从0增加到1。之后,我单击第二行表示计数值将从1增加到2。我希望在第二行中将计数值增加为0到1,而不是1到2` public class ExpandListAdapter extends BaseExpandableListAdapter { private Context context; pri

我已创建expandablelisview。如果单击子项中的plus imageview,则count的值将增加1。最初,所有子项的计数值均为0。如果我单击第一行中的加号,计数值将从0增加到1。之后,我单击第二行表示计数值将从1增加到2。我希望在第二行中将计数值增加为0到1,而不是1到2`

public class ExpandListAdapter extends BaseExpandableListAdapter {

    private Context context;
    private ArrayList<Group> groups;
    ArrayList<Child> ch_list=new ArrayList<Child>();

    Integer count=0;

    public class ViewHolder {

        TextView tv ;
        ImageView food_image;
        ImageView minus,plus ;
         TextView item_count;

    }


    public ExpandListAdapter(Context context, ArrayList<Group> groups) {
        this.context = context;
        this.groups = groups;

    }


    @Override
    public Object getChild(int groupPosition, int childPosition) {
        ArrayList<Child> chList = groups.get(groupPosition).getItems();
        return chList.get(childPosition);
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public View getChildView(final int groupPosition, final int childPosition,
                             boolean isLastChild, View convertView, ViewGroup parent) {

        final Child child = (Child) getChild(groupPosition, childPosition);



        ViewHolder viewHolder = null;
        if (convertView == null) {
            LayoutInflater inflator = LayoutInflater.from(parent.getContext());
            convertView = inflator.inflate(R.layout.detail_list, null);
            viewHolder = new ViewHolder();

            viewHolder.tv = (TextView) convertView.findViewById(R.id.type);
            viewHolder.food_image = (ImageView) convertView.findViewById(R.id.food_image);
            viewHolder.minus = (ImageView) convertView.findViewById(R.id.minus);
            viewHolder.plus = (ImageView) convertView.findViewById(R.id.plus);
            viewHolder.item_count = (TextView) convertView.findViewById(R.id.count);


            convertView.setTag(viewHolder);


        }
        else {
            viewHolder = (ViewHolder) convertView.getTag();
        }


        viewHolder.tv.setText(child.getName().toString());


        final ViewHolder finalViewHolder = viewHolder;
        viewHolder.plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                count=count+1;
                finalViewHolder.item_count.setText(count.toString());
            }
        });




        final ViewHolder finalViewHolder1 = viewHolder;
        viewHolder.minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                count=count-1;
                finalViewHolder1.item_count.setText(count.toString());   //Key -> String.valueOf(position) and Value -> int count
            }
        });

        return convertView;
    }

    @Override
    public  int getChildrenCount(int groupPosition) {
        ArrayList<Child> chList = groups.get(groupPosition).getItems();
        return chList.size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return groups.get(groupPosition);
    }

    @Override
    public int getGroupCount() {
        return groups.size();
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
                             View convertView, ViewGroup parent) {
        Group group = (Group) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater inf = (LayoutInflater) context
                    .getSystemService(context.LAYOUT_INFLATER_SERVICE);
            convertView = inf.inflate(R.layout.group_item, null);
        }
        TextView tv = (TextView) convertView.findViewById(R.id.group_name);
        tv.setText(group.getName());
        ExpandableListView eLV = (ExpandableListView) parent;
        int count = getGroupCount();
                          if(count<1){

                             eLV.expandGroup(groupPosition);
                             // eLV.setGroupIndicator(null);
                          }


        return convertView;
    }



    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

}

`

在getChildView中将count变量定义为局部变量,而不是类中的全局变量。你可以在每一行或任何地方显示它。但这样,它对每一行都是唯一的,而不是适配器的全局

编辑:

在适配器内创建一个整数全局数组

int[] myIntegerArray = new int[size];
整数数组默认启动为0,如前所述。 现在只需在getChildView onClickListener中执行以下操作:

myIntegerArray[childPosition] += 1 
finalViewHolder.item_count.setText(Integer.toString(myIntegerArray[childPosition]));

将count变量定义为getChildView中的局部变量,而不是类中的全局变量。你可以在每一行或任何地方显示它。但这样,它对每一行都是唯一的,而不是适配器的全局

编辑:

在适配器内创建一个整数全局数组

int[] myIntegerArray = new int[size];
整数数组默认启动为0,如前所述。 现在只需在getChildView onClickListener中执行以下操作:

myIntegerArray[childPosition] += 1 
finalViewHolder.item_count.setText(Integer.toString(myIntegerArray[childPosition]));

我刚刚告诉过你,在getChildView函数中创建变量。类似于整数计数=0;它应该可以做到。它的工作,但如果滚动列表的值得到回收,我忘记了回收。尝试使用列表中最大项的大小创建全局数组。然后在getChildView中访问视图位置处的数组。这应该可以解决回收的问题。你可以用简单的代码解释我。我不明白你说的是什么,如果我喜欢这意味着它显示错误。我已经发布了我的logcat错误。我刚刚告诉你,在getChildView函数中创建变量。类似于整数计数=0;它应该可以做到。它的工作,但如果滚动列表的值得到回收,我忘记了回收。尝试使用列表中最大项的大小创建全局数组。然后在getChildView中访问视图位置处的数组。这应该可以解决回收的问题。你可以用简单的代码解释我。我不明白你说的是什么,如果我喜欢,这意味着它显示错误。我已经发布了我的logcat错误