我有一个列表视图,一个自定义视图,我希望在第一个项目的左侧有一个加号图标。只在第一项!
我编写了自定义适配器并在getView()方法中使用了if这样的条件:
If position == 0
imgicon.setvisibility=0;
}
else
{
imgicon.setvisibility=1;
}
但是当我上下滚动列表时,不仅第一个项目显示图标,而且一些随机项目也显示该图标。怎么了?这是一个错误吗?
修改更不用说如果删除该行:imgicon.setvisibility==0
,所有图标都会消失。
编辑:
这是我的自定义数组适配器:
public class Projects_list_custom_array extends ArrayAdapter<Project_Detail> implements
Filterable {
private final Object mLock = new Object();
private ItemsFilter mFilter;
public ArrayList<Project_Detail> mItems;
private ArrayList<Project_Detail> objects;
public Projects_list_custom_array(Context context, int textViewResourceId,
ArrayList<Project_Detail> objects) {
super(context, textViewResourceId, objects);
this.objects = objects;
this.mItems = new ArrayList<Project_Detail>(objects);
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.activity_placeholder_projects_list,
null);
}
Project_Detail i = objects.get(position);
if (i != null) {
TextView tt = (TextView) v
.findViewById(R.id.projects_list_first_placeholder);
RelativeLayout projects_list_layout = (RelativeLayout)v.findViewById(R.id.projects_list_placeholder_layout);
if (tt != null) {
tt.setText(i.get_projectname() + " " + position);
}
if (position == 0) {
ImageView imgv = new ImageView(getContext());
imgv.setImageResource(R.drawable.project_add);
projects_list_layout.addView(imgv);
}
}
return v;
}
/* ... */
@Override
public int getCount() {
return objects.size();
}
@Override
public Project_Detail getItem(int position) {
return objects.get(position);
}
答案 0 :(得分:2)
不要将ImageView动态添加到布局中,而应将其作为xml布局的一部分并使用其可见性进行播放。
因此,假设您已将其添加到布局中,这部分代码应该是这样的 -
ImageView iv = (ImageView) v.findViewById(R.id.some_id);
if(position == 0)
iv.setVisibility(View.VISIBLE);
else
iv.setVisibility(View.GONE);
else部分很重要,因为适配器重用了视图。这就是为什么你有一些带有'加'图标
的随机元素的原因答案 1 :(得分:0)
好的,我们需要查看完整的代码,以了解这里的错误。你能告诉我们实际的Java / XML文件吗?
首先,列表项可见性的默认值是多少?确保默认情况下加号按钮设置为View.GONE,并且列表项设置为View.VISIBLE。
其次,您是否为每个列表项复制相同的视图?这是否意味着所有imgicons都具有相同的ID?也许你应该以编程方式将imgicon插入到第一个列表元素中,而只是第一个列表元素。
答案 2 :(得分:0)
您能告诉我们实际的Java / XML files?
但基本的想法是:
首先在您的XML(R.layout.activity_placeholder_projects_list
)文件中添加一个imagebutton
,然后在java中使用if(position==0){//set visibility to Visible}else{//set visibility to gone}. in getview().