Auf dem gleichen Aktivitätslayout habe ich ein TextView-Feld und ein ListView mit einer Schaltfläche für jedes Element. In meinem ListView-Array-Adapter habe ich einen Button click Listener innerhalb der getView() -Methode, wo ich versuche, den Wert meines oben erwähnten TextView-Feldes "dynamisch" zu aktualisieren.Wie aktualisiere ich ein TextView-Feld dynamisch über eine ListView-Schaltfläche?
Bisher konnte ich den TextView-Wert mit Hilfe einer überhöhten Instanz aktualisieren, aber ich kann den aktualisierten TextView nur sehen, wenn ich die Seite durch erneutes Aufrufen der Aktivitätsseite aus dem Hauptmenü aktualisiere.
Als letzte Lösung habe ich es so eingerichtet, dass die Aktivitätsseite innerhalb des Buton-Listeners innerhalb der getView() - Methode neu gestartet wird, ohne dass dies manuell durchgeführt werden muss. Dies ist nicht der beste Weg, da der Benutzer sehen kann, dass die Seite jedes Mal neu geladen wird, wenn er auf die ListView-Objektschaltfläche klickt.
Können Sie mir bitte mitteilen, wie ich den Wert dynamisch aktualisieren kann?
Es folgt mein Adapter Klassencode:
public adapter(Context context, int resource, ArrayList<value> objects)
{
super(context, resource, objects);
layout = resource;
array = objects;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent)
{
box = null;
db = new database(getContext());
if (convertView == null)
{
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(layout, null);
box = new holder();
box.X = (TextView) convertView.findViewById(R.id.valueName);
box.Y = (TextView) convertView.findViewById(R.id.valueNumber);
box.button = (Button) convertView.findViewById(R.id.itemDeleteButton);
box.button.setTag(position);
convertView.setTag(box);
}
else
{
box = (holder) convertView.getTag();
}
box.X.setText(getItem(position).getX());
box.Y.setText(String.valueOf(getItem(position).getY()));
box.button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
View view = View.inflate(getContext(), R.layout.activity_plan, null);
list = (ListView) view.findViewById(R.id.listView);
month = (Spinner) view.findViewById(R.id.inputSpinner);
remainder = (TextView) view.findViewById(R.id.outputRemainder);
adapt = new adapter(getContext(), R.layout.activity_item, array);
array.remove(position);
month_is = month.getSelectedItem().toString();
db.removePlanData(month_is, position + 1);
notifyDataSetChanged();
cursor = db.getHelpDataRows(month_is);
cursor.moveToFirst();
val_is = Integer.parseInt(cursor.getString(cursor.getColumnIndex("value")));
remainder_is = val_is - db.getCurrent(month_is);
remainder.setText(String.valueOf(remainder_is));
// RESTARTING ACTIVITY TO SEE THE UPDATED TEXTVIEW VALUE OUTSIDE LISTVIEW.
Intent intent= new Intent(getContext(), plan.class);
getContext().startActivity(intent);
}
});
return convertView;
}
public class holder
{
TextView X;
TextView Y;
Button button;
}
Es wäre nützlich, wenn Sie Ihren Code –
zeigen Sie Ihren Code zeigen konnte. – Chisko
Danke für Ihre Antworten. Ich habe meinen Code unten gepostet. Entschuldigung für die späte Antwort. Ich schätze Ihre Hilfe! – Ras