Java 在Android中滚动屏幕时,ListView的替代颜色消失
我使用的是带有交替颜色行的ListView。但当ListView超过屏幕长度时,滚动时,替代颜色消失。 下面是我的代码:Java 在Android中滚动屏幕时,ListView的替代颜色消失,java,android,listview,android-listview,view,Java,Android,Listview,Android Listview,View,我使用的是带有交替颜色行的ListView。但当ListView超过屏幕长度时,滚动时,替代颜色消失。 下面是我的代码: public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = getActivity().getLayoutInflater() .inflate(R.lay
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater()
.inflate(R.layout.problem_list_row, null);
if(position%2!=0) {
convertView.setBackgroundColor(Color.parseColor("#ebebeb"));
}
}
if(position%2!=0){
convertView.setBackgroundColor(Color.parseColor("#ebebeb"));
}
/* some code */
return convertView;
}
下面是ListView的图片
convertView
如果整个ListView
适合在屏幕上显示,则该视图为null
。但是,一旦开始滚动,View
s将从屏幕上移出,并作为convertView
传递给getView()
方法。有时,接收到的convertView
将是灰色的,即使您希望视图
为白色。您的代码不处理这种情况,因为它只将视图
涂成灰色,当不再需要背景色时,它不会清除背景色。要解决此问题,您需要设置奇数和偶数位置的颜色
这应该行得通
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater()
.inflate(R.layout.problem_list_row, null);
}
convertView.setBackgroundColor(Color.parseColor(position%2!=0 ? "#ebebeb" : "#ffffff"));
/* some code */
return convertView;
}
试试这个代码
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater()
.inflate(R.layout.problem_list_row, null);
}
if(position%2==0)
{
// SET EVEN POSITION COLOR
convertView.setBackgroundColor(Color.parseColor("#ebebeb"));
}
else
{
//SET ODD POSITION COLOR
}
/* some code */
return convertView;
}
我希望这对您有所帮助。我建议您使用多个视图,因此在您的案例中使用两个.xml文件 我在我的网站上的一篇文章中做了与您完全相同的事情:
希望这会有帮助 这就是上面所做的。我用position只是为了检查它是偶数还是奇数。但是如果position是偶数,你并没有清除背景色。