'if' 条件在 BaseAdapter 中无法正常工作
The 'if' condition not work properly in BaseAdapter
我在 BaseAdapter 的 getView 中有这段代码 class:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.listview_item, parent, false);
} else {
v = convertView;
}
LinearLayout mLayout = v.findViewById(R.id.layout_list_item);
if (!mList.get(position).isOperative()) {
mLayout.setBackgroundResource(R.drawable.list_item_background_inactive);
} else {
mLayout.setBackgroundResource(R.drawable.list_item_background_active);
}
TextView mTextOne = v.findViewById(R.id.text_one);
TextView mTextTwo = v.findViewById(R.id.text_two);
mTextOne.setText(mList.get(position).getPropertyOne());
mTextTwo.setText(mList.get(position).getPropertyTwo());
return v;
}
在
if (!mList.get(position).isOperative())
我想做一个背景设置,背景在开始时应用正确,但如果我滚动,我会丢失初始设置。
在 mList 中有具有 3 个属性的对象(String propertyOne、propertyTwo、Boolean isOperative)。
有什么想法吗?
提前致谢!
我使用 ViewHolder:
找到解决方案
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null);
holder.layoutOperative = convertView.findViewById(R.id.layout_list_item);
holder.txtOne = convertView.findViewById(R.id.text_one);
holder.txtTwo = convertView.findViewById(R.id.text_two);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (mBuildingsList.get(position).isOperative()) {
holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_active);
} else {
holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_inactive);
}
holder.txtOne.setText(mList.get(position).getPropertyOne());
holder.txtTwo.setText(mList.get(position).getPropertyTwo());
return convertView;
}
感谢大家!
我在 BaseAdapter 的 getView 中有这段代码 class:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.listview_item, parent, false);
} else {
v = convertView;
}
LinearLayout mLayout = v.findViewById(R.id.layout_list_item);
if (!mList.get(position).isOperative()) {
mLayout.setBackgroundResource(R.drawable.list_item_background_inactive);
} else {
mLayout.setBackgroundResource(R.drawable.list_item_background_active);
}
TextView mTextOne = v.findViewById(R.id.text_one);
TextView mTextTwo = v.findViewById(R.id.text_two);
mTextOne.setText(mList.get(position).getPropertyOne());
mTextTwo.setText(mList.get(position).getPropertyTwo());
return v;
}
在
if (!mList.get(position).isOperative())
我想做一个背景设置,背景在开始时应用正确,但如果我滚动,我会丢失初始设置。
在 mList 中有具有 3 个属性的对象(String propertyOne、propertyTwo、Boolean isOperative)。
有什么想法吗?
提前致谢!
我使用 ViewHolder:
找到解决方案@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null);
holder.layoutOperative = convertView.findViewById(R.id.layout_list_item);
holder.txtOne = convertView.findViewById(R.id.text_one);
holder.txtTwo = convertView.findViewById(R.id.text_two);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (mBuildingsList.get(position).isOperative()) {
holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_active);
} else {
holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_inactive);
}
holder.txtOne.setText(mList.get(position).getPropertyOne());
holder.txtTwo.setText(mList.get(position).getPropertyTwo());
return convertView;
}
感谢大家!