2016-06-08 122 views
2

我正在使用自定义列表视图使用Base Adapter.I想要更改文本颜色的只点击项目文本视图。更改文本颜色的自定义listview点击项目运行时间

点击列表项目对话框将打开并点击确定按钮想要更改列表视图的单击项目的文本颜色。并非所有列表视图的项目。

我已经说我不想改变整个列表查看项目的颜色。

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

@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; 
} 

我想要做这样的

enter image description here

+1

的[动态改变列表视图(列表项)的TextView的颜色]可能的复制(http://stackoverflow.com/questions/9679171/dynamically-change -color-of-list-itemtextview-in-listview) – DenisGL

+0

No ..我试过这个但不改变textview的颜色 – KrishnaJ

+0

@KrishnaJ你可以发布listview的Adapter类文件 –

回答

0

尝试getView()的开头补充一点:

final ListView listview = (ListView) parent; 

然后在你的动作,不改文本颜色,但检查所选项目:

listview.setItemChecked(position, true); 

回报convertView之前,改变文字颜色相应:

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