Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> ListView中響應item的點擊事件並且刷新界面,listviewitem

ListView中響應item的點擊事件並且刷新界面,listviewitem

編輯:關於android開發

ListView中響應item的點擊事件並且刷新界面,listviewitem


---恢復內容開始---

最近在在實現listview功能中遇到了這個問題:

點擊事件寫在了adapter的item中,不知道如在listview的點擊事件中更新activity的點擊事件,折騰了許久,終於解決,以下為實現的步驟:

1.要實現的功能:點擊垃圾桶,刪除該item,具體布局如下圖

2.avtivity將數據封裝成bean對象存在list集合infos中,傳送給adaper

1 //從數據庫中查詢所有數據,dao是數據庫操作對象
2 BlackContactsDao dao = new BlackContactsDao(this);
3 List<BlackContactsInfo> infos = dao.queryALL();
4 //將返回的數據添加到list集合中,傳送給adapter顯示
5 mdapter = new BlackContactsItemAdapter(this,infos);
6 blackcontactsLvList.setAdapter(mdapter);    

3.adaper收到數據後進行顯public class BlackContactsItemAdapter extends BaseAdapter {

    List<BlackContactsInfo> infos;
    Context context;
    String type;
  //有參構造,傳進infos數據,跟context
    public BlackContactsItemAdapter(Context context, List<BlackContactsInfo> infos) {
        this.infos = infos;
        this.context =context;
    }

    @Override
    public int getCount() {
        return infos.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if(convertView == null) {
            convertView = View.inflate(context, R.layout.item_blackcontacts_list, null);
            holder = new ViewHolder();
            //找控件
            holder.ivdele = (ImageView) convertView.findViewById(R.id.blackcontacts_iv_dele);
            holder.tvPhone = (TextView) convertView.findViewById(R.id.item_blackcontacts_phone);
            holder.tvType = (TextView) convertView.findViewById(R.id.item_blackcontacts_type);
            //給converview打上標簽
            convertView.setTag(holder);
        }else{
           holder = (ViewHolder) convertView.getTag();
        }
        final BlackContactsInfo info ;
        info = infos.get(position);
            switch (info.type){
                case 0:
                    type = "電話";
                    break;
                case 1:
                    type = "短信";
                    break;
                case 2:
                    type = "電話+短信";
                    break;
            }
holder.tvPhone.setText(info.phone); holder.tvType.setText(type); //給item中的垃圾桶設置點擊事件 holder.ivdele.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //當垃圾桶被點擊了,就根據被點擊的item的號碼,從數據庫中刪除 BlackContactsDao dao = new BlackContactsDao(context); dao.delete(info.phone); //以下下為核心代碼,更新ui infos.remove(info); notifyDataSetChanged(); } }); return convertView; } class ViewHolder{ ImageView ivdele; TextView tvPhone,tvType; } }

4.核心代碼:

                //在對數據庫進行刪除該數據後,也要對傳給listview的數據(list集合進行更新數據),infos集合要移除點擊的對象
                infos.remove(info);
                //再調用notifyDataSetChanged();才可以真正實現數據更新。
                notifyDataSetChanged();

 

 


---恢復內容結束---

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved