AdapterListview Android druckt die gleichen Elemente viele Zeit
import ...;
public class CustomAdapter extends ArrayAdapter<MyObject> {
public CustomAdapter(Context context, ArrayList<MyObject> objects) {
super(context, 0, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(getContext());
View view1 = inflater.inflate(R.layout.row, parent, false);
MyObject myobj = getItem(position);
String objectName = myobj.getName();
TextView name_TV = (TextView) view1.findViewById(R.id.name);
name_TV.setText(objectName);
return view1;
}
}
MainActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList <MyObject> obj_list = new ArrayList<MyObject>();
obj_list.add(new MyObject("user1", 123));
obj_list.add(new MyObject("user2", 123));
obj_list.add(new MyObject("user3", 123));
CustomAdapter adptr = new CustomerAdapter(this, obj_list);
ListView lv = (ListView) findViewById(R.id.abcListview);
lv.setAdapter(adptr);
}
MyObject Klasse
public class MyObject{
String a;
int b;
public MyObject(String a, int b){
this.a = a;
this.b = b;
}
public String getName(){
return a;
}
}
Der Code wird 3 Listenansicht Artikel und die "user3" drucken dreimal statt einmal "user1", einmal "user2", einmal "user3".
bearbeiten Ergebnis des obigen Code: http://imgur.com/BBJS0wt
(1) Bitte verwenden Sie RecyclerView (2) Wenn Sie sich weigern, Verwenden Sie RecyclerView mindestens convertView-Parameter verwenden (3) Code der MyObject-Klasse –
@GregEnnis Ich habe den Code der Klasse MyObject hinzugefügt. Ich bin neu in Android-Programmierung, ich weiß nicht, was RecyclerView ist – szz
Versuchen Sie, den CustomAdapter adptr zu erstellen und festzulegen, bevor Sie der ArrayList Objekte hinzufügen. Fügen Sie dann Ihre Objekte zu Ihrer ArrayList hinzu und verwenden Sie lv.notifyDataSetChanged(). Und sehen Sie, ob es das Gleiche tut. – Rob