I am currently working on an Activity which requires a ListView
with custom NumberPickers. I created the number picker as suggested here.
The problem which I am facing is quite frustrating; when I click on the + button of the number picker, the text view keeps displaying 0. I have tried all these suggestions but nothing has been changed.
@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.num.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;
}
public static class ViewHolder
{
TextView txt;
Button add;
Button sub;
TextView num;
//NumberPicker pk;
}
The above code is found in my ListView
Adapter.
The following is what I have already tried:
When I debug the above code, the counter increments, and the debugger variable shows that the TextView
's text is actually being set to the number present in the counter, however the number displayed is still 0.
I have also tried setting an OnItemClickListener()
to the ListView
, and nothing happens still. I then removed the Button
click listeners from the ListView Adapter class and placed them inside the ListView's onItemClickListener()
. When debugging however, the Button
click listeners are skipped by the debugger.
Do you have any other suggestions?
I would gratefully appreciate all help possible.
Updated:
holder.add.setTag(position);
holder.add.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
int position = (Integer)v.getTag();
int temp = numPickerValues.get(position);
temp += 1;
numPickerValues.set(position, temp);
notifyDataSetChanged();
}
});
holder.num.setText(String.valueOf(numPickerValues.get(position)));
return convertView;