更改自定义列表视图的文本颜色单击项目 运行 时间

change textcolor of custom listview clicked item run time

我正在使用基于 Base 的自定义列表视图 Adapter.I 想更改文本视图中仅单击的项目的文本颜色。

单击列表项时将打开对话框,单击确定按钮时想要更改列表视图中仅单击的项目的文本颜色。不是所有列表视图的项目。

我已经说过我不想更改整个列表视图项的颜色。

我只想更改点击项目的文本视图的颜色。

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    DataBaseAdapter baseAdapter = new DataBaseAdapter(context);

    if (convertView == null) {

        Log.d("tag123", "in getview");
        convertView = inflater.inflate(R.layout.list_item_expense, null);
        viewHolder = new ViewHolder();
        viewHolder.tvDate = (TextView) convertView
                .findViewById(R.id.tvDateExpense);
        viewHolder.ivCatExp = (ImageView) convertView
                .findViewById(R.id.ivCatExpense);
        viewHolder.tvPayee = (TextView) convertView
                .findViewById(R.id.tvPayeeExpense);
        // viewHolder.tvAmt = (TextView) convertView
        // .findViewById(R.id.tvAmtExpense);
        viewHolder.tvBy = (TextView) convertView
                .findViewById(R.id.tvByExpense);

        viewHolder.tvListItemExpense = (com.rey.material.widget.TextView) convertView
                .findViewById(R.id.tvListItemExpense);

        convertView.setTag(viewHolder);

    } else {
        Log.d("tag123", "in getview else condition");
        viewHolder = (ViewHolder) convertView.getTag();
    }

    viewHolder.tvDate.setText(installments.get(position));

    viewHolder.tvPayee.setText(String.valueOf(amount));

    viewHolder.tvBy.setText(String.valueOf(simpleInterest));

    viewHolder.tvListItemExpense.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ActionItem editItem_for_def_user = new ActionItem(ID_EDIT,
                    "Want to Pay?", context.getResources().getDrawable(
                            R.drawable.fbem_ptp32_popup));
            final QuickAction mQuickAction_for_def_user = new QuickAction(
                    context);

            mQuickAction_for_def_user.addActionItem(editItem_for_def_user);

            mQuickAction_for_def_user
                    .setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
                        @SuppressLint("ResourceAsColor")
                        @Override
                        public void onItemClick(QuickAction quickAction,
                                int pos, int actionId) {
                            ActionItem actionItem = quickAction
                                    .getActionItem(pos);

                            if (actionItem != null) {

                                if (viewHolder.tvListItemExpense.isSelected()) {

                                    viewHolder.tvDate.setTextColor(context
                                            .getResources().getColor(
                                                    R.color.light_green));
                                }
                            }
                        }
                    });
            mQuickAction_for_def_user
                    .setOnDismissListener(new QuickAction.OnDismissListener() {
                        @Override
                        public void onDismiss() {

                        }
                    });
            mQuickAction_for_def_user.show(v);
        }
    });
    total = amount + simpleInterest;

    // viewHolder.tvAmt.setText(String.valueOf(total));
    baseAdapter.close();
    return convertView;
}

我想这样做

尝试在 getView() 的开头添加:

final ListView listview = (ListView) parent;

然后在您的操作中,不要更改文本颜色,而是选中所选项目:

listview.setItemChecked(position, true);

在 return convertView 之前,相应地更改文本颜色:

if(listview.isItemChecked(position)){
// set text color for checked items.
}else{
// set text color for normal items.
}