Ich erstelle eine App und habe versucht, eine ListView von Items zu definieren, die in einer XML-Datei definiert sind. Nicht so schwer, dachte ich, aber ich kam in ein sehr seltsames Problem (ich habe das nie herausgefunden) und ich weiß nicht, wie ich das lösen soll, obwohl ich auch im Forum und im Netz nachgesehen habe, ohne irgendeinen Hinweis zu finden . Ich werde hier meinen Code und das Ergebnis auf meinem Handy posten, aber, in ein paar Worten, ist mein Problem, dass meine App die Liste der Elemente erstellt und die Elemente setzt ... Aber wenn es beginnt, kann ich auf meinem Handy-Bildschirm Sie sehen nur den ersten Eintrag mit dem richtigen Text und der gesamte Text der anderen Elemente ist nicht gesetzt. Wenn ich den Bildschirm nach unten scrolle und ihn dann zurück scrolle ... Die Magie passiert! Der ganze Text ist gut eingestellt! Witze mich meine App oder gibt es einen echten Fehler in meinem Code?ListView hat den Text in der App nicht geändert
activity_list.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mancu_000.onclickmarkerlistener.ListActivity">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listview"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
ListActivity.java
package com.example.mancu_000.onclickmarkerlistener;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class ListActivity extends AppCompatActivity {
private ArrayList<String> data = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
ListView lv = (ListView) findViewById(R.id.listview);
generateListContent();
lv.setAdapter(new MyListAdapter(this, R.layout.list_layout, data));
}
private void generateListContent() {
int i = 0;
do {
data.add("This is the element number " + i);
i++;
} while (i < 55);
}
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.thumbnail = (ImageView) convertView.findViewById(R.id.list_item_thumbnail);
viewHolder.title = (TextView) convertView.findViewById(R.id.list_item_text);
viewHolder.button = (Button) convertView.findViewById(R.id.list_item_btn);
viewHolder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "Button clicked for list item " + position, Toast.LENGTH_SHORT).show();
}
});
convertView.setTag(viewHolder);
}
else {
mainViewHolder = (ViewHolder) convertView.getTag();
mainViewHolder.title.setText(getItem(position));
}
return convertView;
}
}
public class ViewHolder {
ImageView thumbnail;
TextView title;
Button button;
}
}
list_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:layout_width="65dp"
android:layout_height="65dp"
android:id="@+id/list_item_thumbnail"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:src="@mipmap/ic_launcher" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/list_item_text"
android:layout_toEndOf="@+id/list_item_thumbnail" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Okay"
android:id="@+id/list_item_btn"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
S o, wenn ich diese Tätigkeit beginnen, das ist, was auf dem Bildschirm passiert: First image
So, scrolle ich den Bildschirm nach unten und blättern Sie es dann wieder nach oben ... Und hier ist die Magie: Second image
Bitte Hilf mir, ich mache mir das schon seit Tagen in die Hose !!
Danke Kumpel, das ist perfekt funktioniert !! Ein wirklich schätzen Sie Ihre Hilfe, Sie haben meinen Tag gemacht !! – Davide