簡體   English   中英

使用OnClickListener刪除適配器項

[英]Remove adapter item with OnClickListener

這是在Fragment中調用的BaseAdapter的內部。 OnClickListener應該刪除孔適配器項,但由於某種原因,它只會刪除內容,而不會刪除框架。 它始終保持適配器的大小,只是內容消失了,下划線也保持不變。

public View getView(final int position, View convertView, ViewGroup parent) {
    boolean memCache = true;
    boolean fileCache = true;

    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater)
        activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = mInflater.inflate(R.layout.favorite_list_item, null);
    }

    TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
    txtTitle.setText(allFavorite.get(position).getTitle());

    Button deleteButton = (Button) convertView.findViewById(R.id.delete_button);
    deleteButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            ((View) view.getParent()).setVisibility(View.GONE);
        }
    });

    return convertView;
  }
}

這樣嘗試

deleteButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            adapter.remove(adapter.getItem(position));
        }
    });

希望對你有幫助

您應該從數據集中刪除綁定到視圖的數據,然后再調用notifyDataSetChanged()而不是隱藏視圖本身。

Button deleteButton = (Button) convertView.findViewById(R.id.delete_button);
    deleteButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            allFavorite.remove(position);
            notifyDataSetChanged();
        }
    });

您的代碼只會使視圖不可見,而不會刪除它們。 您必須像這樣從適配器刪除:

listItem.remove(position);
adapter.notifyDataSetChanged();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM