gpt4 book ai didi

java - 基于矩阵位置[行][列]的Gridview项集

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:04 25 4
gpt4 key购买 nike

enter image description here我需要在 Android 应用程序中设计公交车座位 View ,并且我有矩阵格式的座位位置。例如

a1.row=4;
a1.column=5;

我只需要根据它们的矩阵位置在gridview中设置这些座位。矩阵中的其他空格将为空白或空。显示这些座位 View 后,如果我选择特定座位,则该座位相关对象将被添加到对象列表中,如果我取消选择,它将从对象列表中删除。谁能帮我找到解决方案?是否可以使用 gridview 来实现此目的,但我将使用其矩阵位置在 GridView 中设置项目

最佳答案

试试这个代码

Activity 类

public class MainActivity extends AppCompatActivity {

private RecyclerView recyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

recyclerView = findViewById(R.id.rv_list);
showSeatList();
}

private void showSeatList()
{

List<SeatModel> seatModels = new ArrayList<>();

seatModels.add(new SeatModel("1","A",false));
seatModels.add(new SeatModel("2","B",false));
seatModels.add(new SeatModel("3","C",false));
seatModels.add(new SeatModel("4","D",false));
seatModels.add(new SeatModel("5","E",false));
seatModels.add(new SeatModel("6","F",false));
seatModels.add(new SeatModel("7","G",false));
seatModels.add(new SeatModel("8","H",false));
seatModels.add(new SeatModel("9","I",false));
seatModels.add(new SeatModel("10","J",false));

SeatSelectionAdapter adapter = new SeatSelectionAdapter(this,seatModels);
recyclerView.setLayoutManager(new GridLayoutManager(this, 5));
recyclerView.setAdapter(adapter);

}

}

适配器类

public class SeatSelectionAdapter  extends RecyclerView.Adapter<SeatSelectionAdapter.ViewHolder>
{
private List<SeatModel> seatModelList;
private LayoutInflater inflater;
private Context context;

public SeatSelectionAdapter(Context context, List<SeatModel>models)
{
this.seatModelList = models;
inflater = LayoutInflater.from(context);
this.context = context;
}

@NonNull
@Override
public SeatSelectionAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.model_seat,parent,false);
return new SeatSelectionAdapter.ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull SeatSelectionAdapter.ViewHolder holder, int position) {
SeatModel model = seatModelList.get(position);
holder.setData(model);
}

@Override
public int getItemCount() {
return seatModelList.size();
}

class ViewHolder extends RecyclerView.ViewHolder
{
private CardView cardView;
private LinearLayout lnLayout;
private TextView tvSeat;

private ViewHolder(View view) {
super(view);
tvSeat = view.findViewById(R.id.tv_seat);
cardView = view.findViewById(R.id.cv_card);
lnLayout = view.findViewById(R.id.ln_layout);
}

@SuppressLint({"SetTextI18n", "ClickableViewAccessibility"})
private void setData(final SeatModel model)
{
tvSeat.setText(model.getSeat());
if(model.isSelect())
lnLayout.setBackgroundColor(context.getResources().getColor(R.color.colorAccent));
else lnLayout.setBackgroundColor(context.getResources().getColor(R.color.white));

cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(model.isSelect())
{
model.setSelect(false);
Toast.makeText(context,"Seat not selected",Toast.LENGTH_LONG).show();
}
else{
model.setSelect(true);
Toast.makeText(context,"Seat selected",Toast.LENGTH_LONG).show();
}



notifyDataSetChanged();
}
});

}
}
}

模型类

public class SeatModel
{
private String id,seat;
private boolean isSelect;

public SeatModel(String id, String seat, boolean isSelect) {
this.id = id;
this.seat = seat;
this.isSelect = isSelect;
}

public boolean isSelect() {
return isSelect;
}

public void setSelect(boolean select) {
isSelect = select;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getSeat() {
return seat;
}

public void setSeat(String seat) {
this.seat = seat;
}
}

关于java - 基于矩阵位置[行][列]的Gridview项集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60700946/

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