gpt4 book ai didi

java - 在 ListView 中动态生成具有可绘制形状的 TextView

转载 作者:太空宇宙 更新时间:2023-11-04 13:21:05 24 4
gpt4 key购买 nike

我想问如何使用自定义适配器在 ListView 项内创建 TextView ,并在生成的每个 TextView 上放置 onclick 事件。我想要实现所附的图像。

enter image description here
我可以在 XML 中手动执行此操作,但我想动态生成它:

public View getView(int position, View convertView, ViewGroup parent) {
View itemView;
if (convertView != null) {
itemView = convertView;
}else {
itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.challenges, parent, false);
}

TextView txtTitle = (TextView) itemView.findViewById(R.id.title);

final TextView mondayTxt = (TextView)itemView.findViewById(R.id.monday);
TextView tuesdayTxt = (TextView)itemView.findViewById(R.id.tuesday);
TextView wednesdayTxt = (TextView)itemView.findViewById(R.id.wednesday);
TextView thursdayTxt = (TextView)itemView.findViewById(R.id.thursday);
TextView fridayTxt = (TextView)itemView.findViewById(R.id.friday);
TextView saturdayTxt = (TextView)itemView.findViewById(R.id.saturday);
TextView sundayTxt = (TextView)itemView.findViewById(R.id.sunday);



Items itm = itemList.get(position);

mondayTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Clicked");
itm.setSelected(1);
SelectedAdapter.this.notifyDataSetChanged();
mondayTxt.setBackgroundResource(R.drawable.circle_view_pink);
mondayTxt.setTextColor(Color.WHITE);
}
});

//other click event for other text

txtTitle.setText(itm.getName());

if(itm.getSelected() != null && itm.getSelected() != 0){
mondayTxt.setBackgroundResource(R.drawable.circle_view);
mondayTxt.setTextColor(Color.BLACK);
}
return itemView;
}

更新:我的目标是,当我单击项目 ListView 旁边的 mondatTxt 时,文本的背景将更改为 R.drawable.circle_view_pink,而当前未单击的其他文本仍将是 R.drawable.circle_view 的普通文本。适配器的问题是,当我单击星期一 TextView 时,它也会反射(reflect)到其他 TextView 。

谢谢。

最佳答案

关于您的更新问题:

替换此代码

if(itm.getSelected() != null && itm.getSelected() != 0){
mondayTxt.setBackgroundResource(R.drawable.circle_view);
mondayTxt.setTextColor(Color.BLACK);
}

if(itm.getSelected() != null && itm.getSelected() != 0){
// not select
mondayTxt.setBackgroundResource(R.drawable.circle_view);
mondayTxt.setTextColor(Color.BLACK);
}else{
// select
mondayTxt.setBackgroundResource(R.drawable.circle_view_pink);
mondayTxt.setTextColor(Color.WHITE);
}

您需要更新 getView 中的所选项目。你的 Items.getSelected() 返回是什么?整数?但为什么要检查 selected 是否为 null 呢?

关于java - 在 ListView 中动态生成具有可绘制形状的 TextView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33053113/

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