gpt4 book ai didi

android - 将 ImageView 动态添加到 ListView

转载 作者:行者123 更新时间:2023-11-29 19:38:22 26 4
gpt4 key购买 nike

我有一个 ListView ,我将通过我的适配器向每一行添加一些 ImageView ;当我运行我的程序时,它没有给出任何错误,但是它向 ListView 添加了错误数量的 ImageView ,而且当我滚动 ListView 时, ImageView 的数量发生了变化!我的适配器类如下所示:

public class RideAdapter extends ArrayAdapter {
List list = new ArrayList();
public RideAdapter(Context context, int resource){
super(context, resource);
}

public void add(Rides object) {
super.add(object);
list.add(object);
}

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return list.get(position);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
row = convertView;
RideHolder rideHolder;
if(row == null){

LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.list_row, parent, false);
rideHolder = new RideHolder();
rideHolder.tx_start = (TextView)row.findViewById(R.id.tx_start);
rideHolder.tx_end = (TextView)row.findViewById(R.id.tx_end);
rideHolder.tx_seats = (TextView)row.findViewById(R.id.tx_seats);
rideHolder.tx_distance = (TextView)row.findViewById(R.id.tx_distance);
rideHolder.tx_name = (TextView)row.findViewById(R.id.tx_name);
rideHolder.linearLayout_seats = (LinearLayout) row.findViewById(R.id.linearLayout_seats);
row.setTag(rideHolder);
}
else {
rideHolder = (RideHolder) row.getTag();
}
Rides ride = (Rides) this.getItem(position);
rideHolder.tx_start.setText(ride.getStart());
rideHolder.tx_end.setText(ride.getEnd());
rideHolder.tx_name.setText(ride.getName());

for(int i = 0; i < ride.getSeats(); i++) {
ImageView image = new ImageView(this.getContext());
image.setImageResource(R.drawable.empty_seat);
rideHolder.linearLayout_seats.addView(image);
}
return row;
}

static class RideHolder{
TextView tx_start, tx_end, tx_seats, tx_distance, tx_name;
LinearLayout linearLayout_seats;
}

谁能帮帮我?

谢谢

最佳答案

就在将 View 添加到布局之前从布局中移除所有 View

 Rides ride = (Rides) this.getItem(position);
rideHolder.tx_start.setText(ride.getStart());
rideHolder.tx_end.setText(ride.getEnd());
rideHolder.tx_name.setText(ride.getName());

rideHolder.linearLayout_seats.removeAllViews();

for(int i = 0; i < ride.getSeats(); i++) {
ImageView image = new ImageView(this.getContext());
image.setImageResource(R.drawable.empty_seat);
rideHolder.linearLayout_seats.addView(image);
}
return row;

关于android - 将 ImageView 动态添加到 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38996762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com