ListView item中按钮点击实现删除

ListView item中按钮点击实现删除

在处理ListView 中item的按钮点击事件首先需要在item的根布局中添加

android:descendantFocusability="blocksDescendants"属性,否则item的点击事件会把其中image button的点击事件屏蔽掉

item的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:descendantFocusability="blocksDescendants"    android:layout_width="match_parent"    android:layout_height="match_parent">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical">    <TextView        android:textColor="#333333"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="8dp"        android:layout_marginLeft="10dp"        android:textSize="18sp"        android:id="@+id/tv_title"        android:text="我的日记"/>        <TextView            android:layout_below="@+id/tv_title"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginTop="8dp"            android:layout_marginLeft="10dp"            android:layout_marginBottom="10dp"            android:id="@+id/tv_content"            android:textColor="#333333"            android:text="内容"/>        <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="删除"            android:layout_centerVertical="true"            android:layout_alignParentRight="true"            android:layout_marginRight="8dp"            android:id="@+id/bt_delect"/>    </RelativeLayout></LinearLayout>

主页面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.notetext.ui.MainActivity">

<RelativeLayout        android:layout_width="match_parent"        android:layout_height="50dp">

<TextView            android:id="@+id/bt_add"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:layout_marginLeft="15dp"            android:onClick="add"            android:text="添加" />

<TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            android:text="我的日记"            android:textSize="18sp" />

<TextView            android:id="@+id/bt_setting"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:layout_marginRight="15dp"            android:onClick="set"            android:text="设置" />

</RelativeLayout>    <ListView        android:id="@+id/lv_list"        android:layout_width="match_parent"        android:layout_height="match_parent"></ListView></LinearLayout>

代码:
package com.example.notetext.ui;

import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;

import com.example.notetext.modul.Content;import com.example.notetext.R;

import java.io.Serializable;import java.util.ArrayList;

public class MainActivity extends Activity {    private ListView list;    private ArrayList<Content> arraylist = new ArrayList<>();

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        list = (ListView) findViewById(R.id.lv_list);        initData();

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {                Content context = arraylist.get(position);                Toast.makeText(getApplicationContext(), "条目点击了", Toast.LENGTH_SHORT).show();                Intent intent = new Intent(getApplicationContext(), LookActivity.class);                intent.putExtra("content", (Serializable) context);                startActivity(intent);            }

});    }    private MyAdapter adapter;

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        Toast.makeText(getApplicationContext(), "zhixing", Toast.LENGTH_SHORT).show();        if (data != null) {            switch (requestCode) {                case 1:                    Toast.makeText(getApplicationContext(), "zhixing", Toast.LENGTH_SHORT).show();                    Content content = (Content) data.getExtras().getSerializable("content");                    arraylist.add(content);                    MyAdapter adapter = new MyAdapter(arraylist);                    list.setAdapter(adapter);                    break;            }        }    }

private void initData() {        MyAdapter adapter = new MyAdapter(arraylist);        list.setAdapter(adapter);        adapter.notifyDataSetChanged();    }

public void add(View view) {        Intent intent = new Intent(this, ChangeActivity.class);        startActivityForResult(intent, 1);    }

public void set(View view) {        Intent intent = new Intent (this,SettingActivity.class);        startActivity(intent);

}    public class MyAdapter extends BaseAdapter {        private ArrayList<Content> arrayList;

public MyAdapter(ArrayList<Content> arrayList) {            this.arrayList = arrayList;        }

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

@Override        public Object getItem(int position) {            return arrayList.get(position);        }

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

@Override        public View getView(final int position, View convertView, final ViewGroup parent) {            Holder holder;            if (convertView == null) {                convertView = View.inflate(getApplicationContext(), R.layout.item_note, null);                holder = new Holder(convertView);

convertView.setTag(holder);            } else {                holder = (Holder) convertView.getTag();            }            final Content content = arrayList.get(position);            holder.tv_title.setText(content.getTitle());            holder.tv_content.setText(content.getContent());            holder.bt_delect.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {            //将选中的条目在arrayList中移除                    arrayList.remove(position);            //刷新界面                    initData();                    Log.e("删除条目","33333333333333");                }            });            return convertView;        }

class Holder {            private TextView tv_title;            private TextView tv_content;            private Button bt_delect;            public Holder(View convertView) {                tv_title =(TextView)convertView.findViewById(R.id.tv_title);                tv_content =(TextView)convertView.findViewById(R.id.tv_content);                bt_delect = (Button) convertView.findViewById(R.id.bt_delect);            }        }    }}
				
时间: 2024-12-17 12:11:12

ListView item中按钮点击实现删除的相关文章

jquary根据td中按钮的元素属性删除tr行(删选出想删除的行)

删除没有蓝色按钮的行. <html> <tr> <td>凉山彝族自治州分行</td> <td>管理网</td> <td>离行式ATM</td> <td class="text-center">MSTP</td> <td>西昌市西客站航天阳光</td> <td class="text-center">建设中<

针对listview上面的按钮点击事件的操作

最近遇到listView里面装在adapter,而针对每一个adapter的item项进行点击等操作(例如:QQ空间说说列表的点赞.淘宝等一些电商app合并付款购买数量的改变)的问题,里面涉及好数据提交等一系列操作.开始一直没想到好的解决办法,后来偶然看到回调的方式.尝试了一下,终于解决了! 1.在adapter中定义一个接口,在接口中定义一个抽象方法 public interface BuyNumChangedListener {  public abstract void onBuyNumC

Android学习之解决ListView中item点击事件和item中Button点击事件冲突问题

在ListView中添加Button后,如果只是单纯的加入而不加限制的话,ListView的onClick点击事件没有响应,因为Button获取了item的焦点,想要两者都可点击,需要加上如下限制: 在ListView的适配器中的布局文件中添加: (1)在布局文件的根元素上中添加属性android:descendantFocusability="blocksDescendants" (2)在Button中添加属性android:focusable="false"和a

Android listview item中使用TextWatcher

链接占位.回头补充:http://stackoverflow.com/questions/20958223/edittext-in-listview-is-updated-by-ontextchanged-when-scrolling 下solmaks的回答.

ListView中的item中的Onclick事件的优化

ListView的Adapter的优化布局载入器的载入次数最典型的使用方法是使用convertView进行优化,让convertView当做布局载入器的载体,也就是.重用 convertView 用以避免反复创建 View.反复创建 View 代价较大,并且假设重用 view 不改变宽高,重用View能够降低又一次分配缓存造成的内存频繁分配/回收; convertView = LayoutInflater.from(context).inflate(R.layout.子布局, null) 避免在

ListView的Item中带按钮以及按钮布局的显示与隐藏

一.上图 二.图片功能解说 1.点击ListView中其中的一项,Item中处于隐藏状态的操作按钮部分布局显示,其他项显示的布局同时被隐藏,再次点击该项,操作按钮部分布局再次隐藏. 2.点击各个按钮,分别弹出哪个按钮被点击(也就是点击每一个按钮分别处理不同按钮的业务功能). 三.实现代码主要处于适配器的处理.见如下代码: package com.test.listviewbtn.adapters; import java.util.ArrayList; import android.conten

ListView的Item中包含checkbox,Item无法点击的3种解决方案

ListView的Item中包含checkbox,Item无法点击的2种解决方案 1.在checkbox中设置`focusable属性 android:focusable="false" 2.设置Item的布局,焦点不向下传递 android:descendantFocusability="blocksDescendants"

关于ListView中按钮监听的优化问题(方法一)

在Android应用开发过程中经常会用到ListView,并且每次在item中都要对点击事件进行监听.在给按钮添加OnClickListener时,一般会下意识的在getView()中找到每一个Button并new一个OnClickListener分配给这个Button,并将position赋给这个Button的监听事件.但是当数据量很大时new出这么多的监听器势必会对内存添加压力.然而每个Listener的功能完全一样,Listener里面所需要知道的只是一个position而已.那么怎样更好

android listview item点击展开

最近做项目真是头疼呢?之前想用ListViewAnnotation来着,就是可以实现类似于android 通知栏滑动删除的效果.好像是一位大牛自己一个人写的吧.我在这里首先向他致敬.不过,话说回来,实现原理也是比较易于理解的,就是检测你的滑动距离以及速度,再作出判断,进行操作.具体大家参考下Google keep的两种列表模式下滑动删除的操作就理解类. 非常不幸的事,我再布局中用了fragment和biewpager,所以产生了手势冲突,我为此改写了library里的手势操作检测方法,最后勉强改