需要在ListView中隐藏和显示图像(图像是自定义列表中的项目)

时间:2016-06-02 22:48:21

标签: android listview

我必须在Listview中的点击项目上显示图像。 我使用了自定义Listview并尝试最初隐藏所有图像并仅在所选项目上显示图像,并将图像隐藏在其他项目位置。

listData.addAll(Arrays.asList(getResources().getStringArray(R.array.settings_system_details_dashboard_view)));

    listViewItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectionPosition = position;
            adapter.notifyDataSetChanged();
        }
    });

    adapter = new SettingsListAdapter(this, listData, selectionPosition);
    listViewItems.setAdapter(adapter);

以上代码是我的主要活动

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.activity_settings_custom_list, null);

    TextView title = (TextView)vi.findViewById(R.id.tv_activity_settings_custom_list);
    ImageView selection = (ImageView)vi.findViewById(R.id.iv_activity_settings_custom_list);

    title.setText(mItems.get(position));
    if(selectionPos == position)
        selection.setVisibility(View.VISIBLE);
    else
        selection.setVisibility(View.GONE);

    return vi;
}

这是在适配器

但是notifyDataSetChanged()没有帮助,因为selectionPosition (updated position)没有传递给适配器!

让我知道如何从活动中将位置发送到适配器以显示和隐藏适配器中的图像!

2 个答案:

答案 0 :(得分:0)

您可以在适配器中设置一个setter方法来设置所选位置,并根据该位置执行任何操作。

private int selectionPos;

    public void setSelectedPos(int selectedPos){
      this.selectionPos = selectedPos;
    }

答案 1 :(得分:0)

你想点击每个位置使你的ImageView可见吗? 如果是,那么你将不得不使用POJO / Model类。 在模型类中获取布尔值,并在单击Listview位置时将其设置为true。 并检查适配器中的布尔值。

在OnItemClickListener()中只调用adapter.notifyDataSetChanged();

listViewItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        adapter.notifyDataSetChanged();
    }
});