在我的 ListView
的每一行中,我想要一个 TextView
(最初在 XML 中给出 android:visibility="gone"
)仅当满足条件时才可见。
所以我做了类似下面的伪代码的事情。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = layoutInflater.inflate(R.layout.row_item, parent, false);
} else {
view = convertView;
}
...
if (ape.getAlpha() != null && ape.getAlpha().equals("RON") ) {
TextView textView = (TextView) view.findViewById(R.id.Item_textView5);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setBackgroundColor(Color.CYAN);
}
});
textView.setVisibility(View.VISIBLE);
}
...
}
现在,由于每一行都被回收并且再次调用 getView()
,一旦 (ape.getAlpha() != null && ape.getAlpha().equals ("RON"))
条件连续满足,因此 textview
的 visibility
设置为 View.VISIBLE
>,它对于下一行仍然可见。
问题是,在将其设置为 View.VISIBLE
后,如何重置该行布局的下一行的 textview
的可见性被回收,以便将可见性重置为gone
不会反射(reflect)在当前行中,但对于将使用同一行布局的下一行不可见?
最佳答案
只需按照注释中的建议添加 else 部分,并将 textView
初始化移动到 if block 之外,如下所示:
TextView textView = (TextView) view.findViewById(R.id.Item_textView5);
if (ape.getAlpha() != null && ape.getAlpha().equals("RON") ) {
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setBackgroundColor(Color.CYAN);
}
});
textView.setVisibility(View.VISIBLE);
}else{
textView.setVisibility(View.GONE);
}
关于android - 我在 ListView 的 getView() 中将 textview 的 VISIBILITY 设置为 VISIBLE - 它对于下一行也保持可见。怎么解决这个问题呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31775917/