Können Sie mir helfen, ich lerne! ;-)Wie kann ich Text innerhalb einer ListView ändern, mit einem Adapter
Ich habe zwei Knöpfe "+" und "-" und ich möchte, dass sie den Betrag um eins nach oben oder nach unten erhöhen oder verringern. Wie stelle ich sicher, dass es nur Auswirkungen auf die rechte Textansicht mit einem Adapter hat.
Jetzt wirken alle Tasten nur auf die erste. Ich weiß, dass ich die Position/ID des Arrays bekommen muss. Aber ich weiß nicht wie.
btw
Merk = Marke
Aantal = Betrag
public class ListViewDemo2 extends Activity {
private ArrayList<String> data = new ArrayList<String>();
int aantal = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_demo2);
ListView lv = (ListView) findViewById(R.id.bestel_lijst);
lv.setAdapter(new MyListAdapter(this, R.layout.list_item, data));
generateListContent();
}
private void generateListContent(){
for (int i =0; i < 55; i++){
data.add("this is row number: " + i);
}
}
@Override
public boolean onCreateOptionsMenu (Menu menu){
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings){
return true;
}
return super.onOptionsItemSelected(item);
}
private class MyListAdapter extends ArrayAdapter<String>{
private int layout;
public MyListAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
layout = resource;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder mainViewholder = null;
if(convertView == null){
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(layout, parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.Merk = (TextView) convertView.findViewById(R.id.Merk);
viewHolder.Aantal = (TextView) convertView.findViewById(R.id.Aantal);
viewHolder.btnup = (Button) convertView.findViewById(R.id.Bup);
viewHolder.btndown = (Button) convertView.findViewById(R.id.Bdown);
viewHolder.btndown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
aantal = aantal-1;
displayAantal(aantal);
}
});
viewHolder.btnup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
aantal = aantal+1;
displayAantal(aantal);
}
});
convertView.setTag(viewHolder);
}
else {
mainViewholder = (ViewHolder)convertView.getTag();
mainViewholder.Merk.setText(getItem(position));
}
return convertView;
}
}
public class ViewHolder {
TextView Merk;
TextView Aantal;
Button btnup;
Button btndown;
}
public void displayAantal(int aantal) {
TextView aantalView = (TextView) findViewById(R.id.Aantal);
aantalView.setText(String.valueOf(aantal));
}
}
Thanx Jungs. Aber ich bin immer noch fest.
Wenn ich die obigen Einstellungen ändern. Die viewHolder.btdown und btnup erhalten Fehler.
Und ich habe das notifyDataSetChanged noch nicht behandelt. Ich habe nachgesehen, und ich verstehe, was es macht. Aber ich verstehe nicht, wie ich es umsetzen soll. Ich weiß, ich muss einen Adapter vor dem Punkt der notifyDataSetChanged() hinzufügen, aber keine Ahnung, welche oder wie das funktioniert.
Zurück zu den Büchern denke ich. Oder können Sie etwas mehr erklären? –
Egal Jungs. Ich habe es alleine geschafft! –