Aal*_*oka 3 android android-listview
我的ListView
两个Textviews
.在一行中,第一行是名称,第二行是结果.我需要TextView
根据结果更改结果的背景颜色.就像传递然后结果TextView
颜色将是绿色,当失败结果TextView
颜色将是红色.我有十行ListView
.我试过这样的
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.items, null);
holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);
holder.txtViewTitle = (TextView) convertView.findViewById(R.id.txtViewTitle);
holder.txtViewDescription = (TextView) convertView.findViewById(R.id.txtViewDescription);
holder.txtholder = (TextView) convertView.findViewById(R.id.holder1);
holder.img = (ImageView) convertView.findViewById(R.id.temperrr);
convertView.setTag(holder);
}
else
holder=(ViewHolder)convertView.getTag();
ItemBean bean = (ItemBean) itemList.get(position);
holder.imgViewLogo.setImageResource(bean.getImage());
holder.txtViewTitle.setText(bean.getTitle());
holder.txtViewDescription.setText(bean.getDescription());
//------------------
if (position==0)
{
if(GridviewAdapter.glu>=81)
{
holder.img.setImageResource(R.drawable.red_arrow);
holder.txtViewDescription.setBackgroundResource(R.color.resultred);
holder.txtholder.setBackgroundResource(R.color.resultred);
}
else if (GridviewAdapter.glu==79||GridviewAdapter.glu==80)
{
holder.img.setImageResource(R.drawable.orange_arrow);
holder.txtViewDescription.setBackgroundResource(R.color.resultoren);
holder.txtholder.setBackgroundResource(R.color.resultoren);
}
else
{
holder.img.setImageResource(R.drawable.resultarrawnocolor);
holder.txtViewDescription.setBackgroundResource(0);
holder.txtholder.setBackgroundResource(0);
}
}
holder.img.setImageResource(R.drawable.resultarrawnocolor);
return convertView;
}
Run Code Online (Sandbox Code Playgroud)
但是,当滚动列表时,另一个随机项目的背景颜色会发生变化.我必须做什么.如何控制列表视图中每个位置的项目.以上代码仅适用于第一行.我对吗?
我认为这是因为列表视图会回收视图,从而导致出现此类问题.请尝试以下操作:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = null;
convertView = null;
row = convertView;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) _context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.row, parent,
false);
// your code
}
return row;
}
Run Code Online (Sandbox Code Playgroud)
由于转换视图和行视图都初始化为null .Hence行每次都会膨胀并阻止视图的回收.
链接: Listview android recycling 这个链接解释了回收视图的机制.
机器人:cacheColorHint = "#00000000"
试试这个
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.items, null);
holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);
holder.txtViewTitle = (TextView) convertView.findViewById(R.id.txtViewTitle);
holder.txtViewDescription = (TextView) convertView.findViewById(R.id.txtViewDescription);
holder.txtholder = (TextView) convertView.findViewById(R.id.holder1);
holder.img = (ImageView) convertView.findViewById(R.id.temperrr);
convertView.setTag(holder);
}
else
holder=(ViewHolder)convertView.getTag();
ItemBean bean = (ItemBean) itemList.get(position);
holder.imgViewLogo.setImageResource(bean.getImage());
holder.txtViewTitle.setText(bean.getTitle());
holder.txtViewDescription.setText(bean.getDescription());
//**********SET ALSO YOUR DEFAULT BACKGROUND HERE******** like//
holder.txtViewDescription.setBackgroundResource(R.color.DEFAULCOLOR);
holder.txtholder.setBackgroundResource(R.color.DEFAULCOLOR);
holder.img.setImageResource(R.drawable.defalut_image);
//**********SET ALSO YOUR DEFAULT BACKGROUND HERE******** ok//
//------------------
if (position==0)
{
if(GridviewAdapter.glu>=81)
{
holder.img.setImageResource(R.drawable.red_arrow);
holder.txtViewDescription.setBackgroundResource(R.color.resultred);
holder.txtholder.setBackgroundResource(R.color.resultred);
}
else if (GridviewAdapter.glu==79||GridviewAdapter.glu==80)
{
holder.img.setImageResource(R.drawable.orange_arrow);
holder.txtViewDescription.setBackgroundResource(R.color.resultoren);
holder.txtholder.setBackgroundResource(R.color.resultoren);
}
else
{
holder.img.setImageResource(R.drawable.resultarrawnocolor);
holder.txtViewDescription.setBackgroundResource(0);
holder.txtholder.setBackgroundResource(0);
}
}
holder.img.setImageResource(R.drawable.resultarrawnocolor);
return convertView;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8599 次 |
最近记录: |