在listview

时间:2015-10-10 10:47:21

标签: java android listview

我想问一下如何使用自定义适配器在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;
}

更新 我的目标是当我点击mondatTxt以及项目列表视图时,文本的背景将更改为 R.drawable.circle_view_pink ,而其他当前未点击的文本仍将是正常文本,其中ic R .drawable.circle_view 即可。 适配器上的问题是当我点击星期一textview时它也会反映到其他textview。

感谢。

1 个答案:

答案 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?