我是android的新手,我有ListView
自定义适配器,如果ListView
项中的匹配项想要更改Activity
的列表项文本颜色,我会传递一个字符串。
这是我的代码:
MyActivity:
public void handleResult(String rawResult) {
if(Utility.isNotNull(rawResult.getText().toString())) {
for(int i=0;i<listView.getAdapter().getCount();i++){
if(rawResult.equals(listItems.get(i).getStockItems())){
// listView.getChildAt(i).setBackgroundColor(ContextCompat.getColor(context, R.color.hint));
/* Here I want to change list item text color*/
adapter.notifyDataSetChanged();
}
}
}
}
&#13;
提前致谢!
答案 0 :(得分:0)
UI任务只能在UI线程上完成。如果你想从处理程序运行它,你必须定义一个runOnUiThread方法。看看这个ans
答案 1 :(得分:0)
试试这段代码:
for(int i=0;i<listView.getChildCount();i++) {
// yours code
View item = listView.getChildAt(i);
item.setBackgroundResource(R.drawable.your_image); //change image
((TextView)item.findViewById(R.id.text1)).setTextColor(Color.RED); //text1 is your cusotm listview item's text id
adapter.notifyDataSetChanged();?
}
答案 2 :(得分:0)
我假设您使用TextView
,要更改文字颜色,首先需要让他,在您创建商品时,将ID添加到TextView
with xml
<TextView
android:id="@+id/myId"...
或者如果你使用java
textView.setId(R.id.myId)
并在您的代码中:
((TextView)listView.getChildAt(i).findViewById(R.id.myId)).setTextColor(ContextCompat.getColor(context, R.color.hint));
如果您想使用Drawble Image设置项目背景,您可以使用 .setBackground(getResources()getDrawable(R.drawable.yourDrawble));
答案 3 :(得分:0)
在你的模型类中添加一个这样的参数
public class DataHolder{
private String StockItems;
private int isSelected;
public DataHolder(String StockItems, int isSelected) {
this.StockItems = StockItems;
this.isSelected = isSelected;
}
public String getStockItems() {
return StockItems;
}
public void setStockItems(String StockItems) {
this.StockItems = StockItems;
}
public int getiIsSelected() {
return isSelected;
}
public void setIsSelected(String isSelected) {
this.isSelected = isSelected;
}
}
初始化IsSelected零
public void handleResult(String rawResult) {
if(Utility.isNotNull(rawResult.getText().toString())) {
for(int i=0;i<listView.getAdapter().getCount();i++){
if(rawResult.equals(listItems.get(i).getStockItems())){
listItems.get(i).setIsSelected(1);
adapter.notifyDataSetChanged();
}
}
}
}
在你的cusom适配器类中检查
if(listItems.get(i).getiIsSelected()==1)
{
//set red text color
}
else
{
//set black text color
}
答案 4 :(得分:0)
在Adapter类中创建一个方法来更新文本颜色并在Adapter中创建一个最初为false的标志,使用以下方法执行此操作
boolean isChangeColor = false;
String colorCode = "#FFFFFF";
private void updateTextColor(boolean isChangeColor , String colorCode) {
this.isChangeColor=isChangeColor;
this.colorCode=colorCode;
notifyDataSetChanged();
}
在getView()
中if(isChangeColor) {
textView.setTextColor(Color.parseColor(colorCode));
} else {
colorCode = "#FFFFFF";
textView.setTextColor(Color.parseColor(colorCode));
}