My ListView
contains two Textviews
. In one row first one is for name and second one is for result. I need to change the background color of the re
I think it is because list view recycles the view hence causing such problems .Try the following :
@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;
}
Since convert view and row view both are intialized as null .Hence rows will be inflated every time and preventing recycling of views .
Link: Listview android recycling This links explains the mechanism of recycling views.
android:cacheColorHint="#00000000"
Set this code on adapter (custom), so you can recycle the view with the previous color only if the view is selected.
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE );
Task task = taskArrayList.get(position);
View view = inflater.inflate(R.layout.task_row, parent, false);
if(MyActivity.getIsClicked() && MyActivity.getPositionClicked() == position){
view.setBackgroundResource(R.color.backgroundSelectedItem);
}
You have to do something like this,
if(Yourmark[position]<50) //Where Yourmark[] is the mark array you are passing to your custom adapter
{
holder.img.setImageResource(R.drawable.red_arrow);
holder.txtViewDescription.setBackgroundResource(R.color.resultred);
holder.txtholder.setBackgroundResource(R.color.resultred);
}
else
{
holder.img.setImageResource(R.drawable.green_arrow);
holder.txtViewDescription.setBackgroundResource(R.color.resultgreen);
holder.txtholder.setBackgroundResource(R.color.resultgreen);
}
}
Try this
@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;
}