Click here to Skip to main content
15,889,315 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
One of my activities requires a list view with custom number pickers in each row. I created the number picker as suggested here. When I click on the buttons, however, the counter doesn't increment or decrement at all.

The following is the code found at my Custom ListView Adapter.

Java
public class MaterialListViewAdapter extends BaseAdapter 
{
    ViewHolder holder;
    int counter = 0;

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

        View vi = convertView;

        //ViewHolder holder = new ViewHolder();

        if(vi == null)
        {
            holder = new ViewHolder();

            vi = inflater.inflate(R.layout.materialdialogcontent, null);

            //Initialize Buttons and TextViews.

            holder.num.setText("0");

            holder.add.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v) 
                {
                    counter++;
                    holder.num.setText("" + counter);
                }
            });

            holder.sub.setOnClickListener(new View.OnClickListener()
            {   
                @Override
                public void onClick(View v) 
                {
                    counter--;
                    holder.sub.setText("" + counter);
                }
            });


            //holder.pk = (NumberPicker)vi.findViewById(R.id.npMaterialAmount);

            vi.setTag(holder);
        }
        else
        {
        holder = (ViewHolder)vi.getTag();
        }

        holder.txt.setText(data.get(position).getName());
        //holder.pk.setMaxValue(20);
        //holder.pk.setMinValue(0);

        return vi;
    }

    private class ViewHolder
    {
        TextView txt;
        Button add;
        Button sub;
        TextView num;
        //NumberPicker pk;
    }

}

When I try debugging to see what's going on, counter doesn't even initialize with '0'.

I tried initializing the counter in the getView() method, however in order to do so I need to set the counter to final, and then another error shows up saying

The final local variable counter cannot be assigned, since it is defined in an enclosing type.

Any suggestions?

ActivityClass:

Java
public class Material extends Activity 
    {
    ArrayList<String> materialList;
    ListView lv;
    Button btnConfirm;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_material);

        lv = (ListView)findViewById(R.id.list);
        btnConfirm = (Button)findViewById(R.id.btnConfirm);

        materialList = new ArrayList<String>();
        Intent i = getIntent();

        materialList = i.getStringArrayListExtra("materialList");

        if(materialList != null)
        {
            Toast t = Toast.makeText(getApplicationContext(), materialList.get(0).toString(), Toast.LENGTH_LONG);
            t.show();
        }
        else
        {
            //FILL HERE LATER
        }

        ArrayList<MaterialClass> materials = new ArrayList<MaterialClass>();
        for(String temp : materialList)
        {
            MaterialClass m = new MaterialClass();
            m.setName(temp);
            materials.add(m);
        }

        MaterialListViewAdapter adapter = new MaterialListViewAdapter(getApplicationContext(), R.layout.materialdialogcontent, materials);
        lv.setAdapter(adapter);
    }

}


Thanks.
Posted
Updated 9-Aug-13 3:21am
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900