我想问一下如何使用自定义适配器在listview项目中创建textview,并在生成的每个textview上放置onclick事件。我希望获得附加的图像。
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;
}
更新 我的目标是当我点击mondatTxt以及项目列表视图时,文本的背景将更改为 R.drawable.circle_view_pink ,而其他当前未点击的文本仍将是正常文本,其中ic R .drawable.circle_view 即可。 适配器上的问题是当我点击星期一textview时它也会反映到其他textview。
感谢。
答案 0 :(得分:0)
您的更新问题:
替换此代码
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()返回? int?但为什么要检查selected是否为null?