对于这样的问题,堆栈溢出有很多答案,但是我找不到我可以转化为我的情况的答案。
实际上,我有一个重写getView方法的列表视图,该列表视图本身正在显示一个字符串,我要实现的目的是能够在以后的时间(而不是在首次创建该文本时)更新此文本的颜色。
我目前所拥有的是物品所在的位置,从这里开始我基本上被卡住了,不确定下一步如何。
ListView lv = (ListView) rootView.findViewById(R.id.lvBarcodes);
Adapter adaptor = lv.getAdapter();
int Position = getPosition(CurrentBarcode);
lBarcodes l = (lBarcodes) lv.getItemAtPosition(Position);
我基本上包含2个方法,即set和get,所以我相信这一步是没有用的,我基本上想要的是setTextColour(position)方法!
我在下面附上了我的代码:
设置列表视图:
ListView lv = (ListView) rootView.findViewById(R.id.lvBarcodes);
LA_Barcodes adaptor = new LA_Barcodes(getActivity(),barcodeList);
lv.setAdapter(adaptor);
方法:
public class LA_Barcodes extends BaseAdapter{
ViewHolder holder = null;
private static LayoutInflater inflater = null;
private final ArrayList Lines;
public LA_Barcodes(Context _ctx, ArrayList _lines)
{
this.Lines = _lines;
Context ctx = _ctx;
inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
if (Lines.size() <= 0)
return 1;
return Lines.size();
}
@Override
public Object getItem(int position) {
return Lines.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if(convertView == null)
{
vi = inflater.inflate(R.layout.lv_barcodes,null);
holder = new ViewHolder();
holder.Barcodes = (TextView) vi.findViewById(R.id.barcodes);
vi.setTag(holder);
}
else
{
holder = (ViewHolder) vi.getTag();
}
if(Lines.size() == 0)
{
holder.Barcodes.setText("No Outstanding Deliveries!");
}
else
{
lBarcodes temp;
temp = (lBarcodes) Lines.get(position);
holder.Barcodes.setText(temp.getBarcode());
}
return vi;
}
public static class ViewHolder
{
public TextView Barcodes;
}
}
您可以在适配器中定义另一个空的arrayList,以保留应更改颜色的editText的位置。
ArrayList<Integer> pos = new ArrayList<Integer>();
和在数组中添加位置的方法:
public void addPos(int position){
pos.add(position);
notifyDataSetChanged();
}
然后在您的适配器(在getView()
方法中)检查此数组中是否存在位置,请更改textColor:
if(pos.contain((Object) position)){
//change text color
}
您可以致电adapter.addPos(CurrentBarcode);
更改textColor
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句