I have created a list view as shown in this image.Link:
Problem: I want that if the user clicks on the button +
or -
the textview which is currently showing 0
is incremented or decremented accordingly. But if I click first item's button the textview is updated in some other row. I don't know how to implement this.
Here's code:
public class HomePage extends Fragment {
String[] listitems;
int[] images = { R.drawable.cadburysilk, R.drawable.cadburys_dairymilk,
R.drawable.perk, R.drawable.kitkat,
R.drawable.nestlemunchchocolate, R.drawable.cadbury_bournville_bar,
R.drawable.snickers };
ListView list;
DBAdapter dbadapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootview = inflater.inflate(R.layout.activity_home_page,
container, false);
View view = View.inflate(getActivity(), R.layout.headerview, null);
Resources res = getResources();
listitems = res.getStringArray(R.array.items);
list = (ListView) rootview.findViewById(R.id.itemslist);
list.addHeaderView(view);
AdapterClass adapterClass = new AdapterClass(this.getActivity(),
listitems, images);
list.setAdapter(adapterClass);
return rootview;
}
}
class AdapterClass extends ArrayAdapter<String> {
Context context;
int[] images;
String[] names;
Button add, sub;
TextView number;
Integer count=0;
static class ViewHolder {
public TextView textView;
public ImageView imageView;
}
public AdapterClass(Context c, String[] items, int imgs[]) {
// TODO Auto-generated constructor stub
super(c, R.layout.rowlayout, R.id.quantity, items);
this.context = c;
this.images = imgs;
this.names = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row = convertView;
// reuse views
if (row == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.rowlayout, parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) row.findViewById(R.id.img);
viewHolder.textView = (TextView) row.findViewById(R.id.textView1);
add = (Button) row.findViewById(R.id.button1);
add.setTag(position);
sub = (Button) row.findViewById(R.id.button2);
sub.setTag(position);
number = (TextView)row.findViewById(R.id.quantity);
row.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) row.getTag();
holder.imageView.setImageResource(images[position]);
holder.textView.setText(names[position]);
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
count=count+1;
number.setText(count.toString());
}
});
sub.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
count=count-1;
number.setText(count.toString());
}
});
return row;
}
}
Please help. Also i need help in how to show the items whose textview contains positive number in next activity or fragment.
See Question&Answers more detail:os