【问题标题】:The 'if' condition not work properly in BaseAdapter'if' 条件在 BaseAdapter 中无法正常工作
【发布时间】:2019-01-18 11:17:10
【问题描述】:

我的 BaseAdapter 类的 getView 中有这段代码:

@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)。

有什么想法吗?

提前致谢!

【问题讨论】:

  • 你能告诉我什么是你的,什么是 mList 吗?
  • 不清楚您要问什么...ifcondition 是什么意思?您的代码中有 2 个 if 条件
  • @B001ᛦ if Condition 只有2
  • 不知道为什么我看到了其中 3 个 :) @Ashish
  • 我正在编辑问题:)

标签: android list if-statement baseadapter listadapter


【解决方案1】:

我通过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;

}

谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    相关资源
    最近更新 更多