• Android ListView item 点击事件失效问题的解决


    关于ListView点击无效,item无法相应点击事件的问题,网上有很多, 大致可分为俩种情况, 一种是 item中存在 ImageButton 等可以点击的组件,这会抢先获得ListView的焦点. 从而导致item点击失效......等等网上好多,不过今天我记录的是另一种情况, 就是ListView中只有TextView 其他什么都没有 ,还失效的情况, 用网上的两种常见的方法,都无济于事.

    经过几番的测试, 发现是在适配器的getView中处理TextView的时候,调用了适配器的notifyDataSetChanged. 在notifyDataSetChanged之后导致item失去焦点.

    之前,碰到过类似的问题, 就是由于在对话框中调用了适配器更新方法notifyDataSetChanged导致Activity失去焦点,影响屏蔽物理返回键的效果.  至于这个notifyDataSetChanged更新以后,哪个组件获得了焦点.还没有研究.先记录下,研究以后在补充这文章.

    下面是摘自网络的相关点击item失效问题的解决方法.仅供参考.


    最近有人问我,在Android里:

    在自定义listView里面有按钮,然后setItemClickListener时不响应,网上很多关于这个的,但我都试过,貌似都解决不了。
    其实刚开始学Android接触ListView时我也遇到此问题,在网上到处搜也难以找到相关解决方案,原因之一是网上原创文章少,转载居多,很多文章都雷同;原因之二在于自己英语不好,不敢上外文论坛去找。
    后来经过自己的慢慢摸索终于解决了这个问题。
    当朋友问我时,我一番简单讲解加几张代码截图就给他解决问题啦~
    废话不多说,先上源代码:源代码
    代码片段:
    main.xml
    [html] view plaincopyprint?

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    <ListView  
        android:id="@+id/lv_list"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:layout_alignParentLeft="true"  
        android:layout_below="@+id/numxback"  
        android:cacheColorHint="#00000000"  
        android:drawSelectorOnTop="false"  
        android:fadingEdge="none"  
        android:fastScrollEnabled="true"  
        android:focusable="false"  
        android:divider="@null"  
        android:focusableInTouchMode="true"  
        android:listSelector="@drawable/itemselected" />  
    


     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    <ListView
        android:id="@+id/lv_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/numxback"
        android:cacheColorHint="#00000000"
        android:drawSelectorOnTop="false"
        android:fadingEdge="none"
        android:fastScrollEnabled="true"
        android:focusable="false"
        android:divider="@null"
        android:focusableInTouchMode="true"
        android:listSelector="@drawable/itemselected" />
    

    在main布局里加入了一个列表控件,ListView,它的各个属性在此处不是重点,这里就不多说,看不懂的读者自己去网上搜吧!
    datalist.xml
    [html] view plaincopyprint?
    <?xml version="1.0" encoding="utf-8"?>

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <TextView  
        android:id="@+id/tv_num"  
        android:layout_width="wrap_content"  
        android:layout_height="60px"  
        android:layout_centerVertical="true"  
        android:background="@drawable/number"  
        android:gravity="center"  
        android:paddingLeft="5px"  
        android:paddingRight="8px"  
        android:textColor="@android:color/white"  
        android:textSize="24sp" />  
    
    <ImageButton  
        android:id="@+id/ib_edit"  
        android:layout_width="60px"  
        android:layout_height="60px"  
        android:layout_alignParentRight="true"  
        android:background="@drawable/edit"  
        <SPAN style="COLOR: #ff0000">android:onClick="OnItemEditClick"  
    

    android:paddingRight="5px" />

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <TextView  
        android:id="@+id/tv_numx"  
        android:layout_width="150px"  
        android:layout_height="60px"  
        android:layout_toRightOf="@+id/tv_num"  
        android:background="@drawable/number"  
        android:gravity="center_vertical"  
        android:singleLine="true"  
        android:textColor="@android:color/white"  
        android:textSize="24sp" />  
    
    <TextView  
        android:id="@+id/tv_numy"  
        android:layout_width="150px"  
        android:layout_height="60px"  
        android:layout_toRightOf="@id/tv_numx"  
        android:layout_toLeftOf="@id/ib_edit"  
        android:background="@drawable/number"  
        android:gravity="center_vertical"  
        android:singleLine="true"  
        android:textColor="@android:color/white"  
        android:textSize="24sp" />  
    



    <?xml version="1.0" encoding="utf-8"?>

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <TextView
        android:id="@+id/tv_num"
        android:layout_width="wrap_content"
        android:layout_height="60px"
        android:layout_centerVertical="true"
        android:background="@drawable/number"
        android:gravity="center"
        android:paddingLeft="5px"
        android:paddingRight="8px"
        android:textColor="@android:color/white"
        android:textSize="24sp" />
    
    <ImageButton
        android:id="@+id/ib_edit"
        android:layout_width="60px"
        android:layout_height="60px"
        android:layout_alignParentRight="true"
        android:background="@drawable/edit"
        android:onClick="OnItemEditClick"
        android:paddingRight="5px" />
    
    <TextView
        android:id="@+id/tv_numx"
        android:layout_width="150px"
        android:layout_height="60px"
        android:layout_toRightOf="@+id/tv_num"
        android:background="@drawable/number"
        android:gravity="center_vertical"
        android:singleLine="true"
        android:textColor="@android:color/white"
        android:textSize="24sp" />
    
    <TextView
        android:id="@+id/tv_numy"
        android:layout_width="150px"
        android:layout_height="60px"
        android:layout_toRightOf="@id/tv_numx"
        android:layout_toLeftOf="@id/ib_edit"
        android:background="@drawable/number"
        android:gravity="center_vertical"
        android:singleLine="true"
        android:textColor="@android:color/white"
        android:textSize="24sp" />
    

    列表控件单项布局,在里面加入了三个TextView,一个ImageButton,显示时三个TextView 在前面,最后一个ImageButton。
    之前说到的按钮点击事件在Activity里用button.setOnClickListener的方式实现时会屏蔽/占用ListView单项单击事件,这里就在布局里加了一个android:onClick="OnItemEditClick",用于绑定按钮点击事件,然后在java代码中实现这个方法,记得须有一个View类型的参数。
    MainActivity.java
    [java] view plaincopyprint?
    package com.test.customlistview;

    import java.util.ArrayList;

    import java.util.HashMap;

    import android.os.Bundle;

    import android.os.Handler;

    import android.os.Message;

    import android.app.Activity;

    import android.app.AlertDialog;

    import android.content.DialogInterface;

    import android.content.DialogInterface.OnClickListener;

    import android.view.View;

    import android.widget.AdapterView;

    import android.widget.ImageButton;

    import android.widget.ListView;

    import android.widget.RelativeLayout;

    import android.widget.SimpleAdapter;

    import android.widget.TextView;

    import android.widget.Toast;

    import android.widget.AdapterView.OnItemLongClickListener;

    public class MainActivity extends Activity {

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    ListView dataListView;  
    SimpleAdapter listAdapter;  
    ArrayList<HashMap<String, Object>> list;  
    private int location;  
    Handler mHandler = new Handler() {  
    
        @Override  
        public void handleMessage(Message msg) {  
            if (msg.arg1 == 1) {  
    
            } else if (msg.arg1 == 2) {  
    
            } else if (msg.arg1 == 4) {  
                if (msg.what == 1) {  
                    dataListView.getChildAt(msg.arg2).setBackgroundResource(  
                            R.drawable.itemback);  
                }  
            }  
            super.handleMessage(msg);  
        }  
    };  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        dataListView = (ListView) findViewById(R.id.lv_list);  
        list = new ArrayList<HashMap<String, Object>>();  
        int count = 20;  
        HashMap<String, Object> map;  
        for (int i = 1; i <= count; i++) {  
            map = new HashMap<String, Object>();  
            map.put("num", i+ "");  
            map.put("a1", "²=");  
            map.put("a2", ""+i*i);  
            list.add(map);  
        }  
        listAdapter = new SimpleAdapter(this, list, R.layout.datalist,  
                new String[] { "num", "a1", "a2" }, new int[] { R.id.tv_num,  
                        R.id.tv_numx, R.id.tv_numy });  
        dataListView.setAdapter(listAdapter);  
        dataListView.setOnItemLongClickListener(new OnItemLongClickListener() {  
            public boolean onItemLongClick(AdapterView<?> arg0, View view,  
                    int position, long id) {  
                location = position;  
                final View nowView = (View) view.findViewById(R.id.ib_edit);  
                Toast.makeText(getBaseContext(), "location=" + location, 2000)  
                        .show();  
                OnClickListener listener = new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int which) {  
                        if (which == 0) {  
                            Toast.makeText(getBaseContext(), "编辑", Toast.LENGTH_LONG).show();  
                        } else if (which == 1) {  
                            Toast.makeText(getBaseContext(), "删除", Toast.LENGTH_LONG).show();  
                        }  
                    }  
                };  
                dataListView.getChildAt(location).setBackgroundResource(  
                        R.drawable.item_frame);  
                Message message = new Message();  
                message.arg1 = 4;  
                message.arg2 = location;  
                message.what = 1;  
                mHandler.sendMessageDelayed(message, 500);  
                String[] Menu = { "编辑", "删除" };  
    
                new AlertDialog.Builder(MainActivity.this).setItems(Menu,  
                        listener).show();  
                return false;  
            }  
        });  
    }  
    
    public void OnItemEditClick(View v) {  
        RelativeLayout layout = (RelativeLayout) v.getParent();  
        TextView tv1=(TextView)layout.findViewById(R.id.tv_num);  
        TextView tv2=(TextView)layout.findViewById(R.id.tv_numx);  
        TextView tv3=(TextView)layout.findViewById(R.id.tv_numy);  
        ImageButton ib=(ImageButton)layout.findViewById(R.id.ib_edit);  
        String str="按钮"+tv1.getText()+"点击啦n"+tv1.getText()+tv2.getText()+tv3.getText();  
        Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();  
    }  
    

    }

    package com.test.customlistview;

    import java.util.ArrayList;
    import java.util.HashMap;

    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ImageButton;
    import android.widget.ListView;
    import android.widget.RelativeLayout;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemLongClickListener;

    public class MainActivity extends Activity {

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    ListView dataListView;
    SimpleAdapter listAdapter;
    ArrayList<HashMap<String, Object>> list;
    private int location;
    Handler mHandler = new Handler() {
    
        @Override
        public void handleMessage(Message msg) {
            if (msg.arg1 == 1) {
    
            } else if (msg.arg1 == 2) {
    
            } else if (msg.arg1 == 4) {
                if (msg.what == 1) {
                    dataListView.getChildAt(msg.arg2).setBackgroundResource(
                            R.drawable.itemback);
                }
            }
            super.handleMessage(msg);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        dataListView = (ListView) findViewById(R.id.lv_list);
        list = new ArrayList<HashMap<String, Object>>();
        int count = 20;
        HashMap<String, Object> map;
        for (int i = 1; i <= count; i++) {
            map = new HashMap<String, Object>();
            map.put("num", i+ "");
            map.put("a1", "²=");
            map.put("a2", ""+i*i);
            list.add(map);
        }
        listAdapter = new SimpleAdapter(this, list, R.layout.datalist,
                new String[] { "num", "a1", "a2" }, new int[] { R.id.tv_num,
                        R.id.tv_numx, R.id.tv_numy });
        dataListView.setAdapter(listAdapter);
        dataListView.setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> arg0, View view,
                    int position, long id) {
                location = position;
                final View nowView = (View) view.findViewById(R.id.ib_edit);
                Toast.makeText(getBaseContext(), "location=" + location, 2000)
                        .show();
                OnClickListener listener = new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        if (which == 0) {
                            Toast.makeText(getBaseContext(), "编辑", Toast.LENGTH_LONG).show();
                        } else if (which == 1) {
                            Toast.makeText(getBaseContext(), "删除", Toast.LENGTH_LONG).show();
                        }
                    }
                };
                dataListView.getChildAt(location).setBackgroundResource(
                        R.drawable.item_frame);
                Message message = new Message();
                message.arg1 = 4;
                message.arg2 = location;
                message.what = 1;
                mHandler.sendMessageDelayed(message, 500);
                String[] Menu = { "编辑", "删除" };
    
                new AlertDialog.Builder(MainActivity.this).setItems(Menu,
                        listener).show();
                return false;
            }
        });
    }
    
    public void OnItemEditClick(View v) {
        RelativeLayout layout = (RelativeLayout) v.getParent();
        TextView tv1=(TextView)layout.findViewById(R.id.tv_num);
        TextView tv2=(TextView)layout.findViewById(R.id.tv_numx);
        TextView tv3=(TextView)layout.findViewById(R.id.tv_numy);
        ImageButton ib=(ImageButton)layout.findViewById(R.id.ib_edit);
        String str="按钮"+tv1.getText()+"点击啦n"+tv1.getText()+tv2.getText()+tv3.getText();
        Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();
    }
    

    }
    OnItemEditClick(View v)方法中通过v.getParent();找到她的容器控件,前面的(RelativeLayout)根据你自己的布局里的容器控件而定。然后即可使用该容器控件找到他的所有自控件,然后读者想干嘛就干嘛啦~
    上面的dataListView.setOnItemLongClickListener实现ListView的item长按事件,我在这里加了一个显示两条菜单的对话框,用于进行其他操作,如编辑、删除等。
    这里也可以实现ListView的点击事件,PS:这段代码是后来加的,直接嵌入源代码中即可,已调试无误。

    [java] view plaincopyprint?
    dataListView.setOnItemClickListener(new OnItemClickListener() {

    1
    2
    3
    4
    5
    6
    7
            @Override  
            public void onItemClick(AdapterView<?> arg0, View view, int arg2,  
                    long arg3) {  
                TextView tv=(TextView)view.findViewById(R.id.tv_num);  
                Toast.makeText(getBaseContext(), "您点击了第" + tv.getText()+"行", 2000).show();  
            }  
        });  
    

    dataListView.setOnItemClickListener(new OnItemClickListener() {

    1
    2
    3
    4
    5
    6
    7
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                    long arg3) {
                TextView tv=(TextView)view.findViewById(R.id.tv_num);
                Toast.makeText(getBaseContext(), "您点击了第" + tv.getText()+"行", 2000).show();
            }
        });修改后的MainActivity.java代码如下
    

    [java] view plaincopyprint?
    package com.test.customlistview;

    import java.util.ArrayList;

    import java.util.HashMap;

    import android.os.Bundle;

    import android.os.Handler;

    import android.os.Message;

    import android.app.Activity;

    import android.app.AlertDialog;

    import android.content.DialogInterface;

    import android.content.DialogInterface.OnClickListener;

    import android.view.View;

    import android.widget.AdapterView;

    import android.widget.AdapterView.OnItemClickListener;

    import android.widget.ImageButton;

    import android.widget.ListView;

    import android.widget.RelativeLayout;

    import android.widget.SimpleAdapter;

    import android.widget.TextView;

    import android.widget.Toast;

    import android.widget.AdapterView.OnItemLongClickListener;

    public class MainActivity extends Activity {

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    ListView dataListView;  
    SimpleAdapter listAdapter;  
    ArrayList<HashMap<String, Object>> list;  
    private int location;  
    Handler mHandler = new Handler() {  
    
        @Override  
        public void handleMessage(Message msg) {  
            if (msg.arg1 == 1) {  
    
            } else if (msg.arg1 == 2) {  
    
            } else if (msg.arg1 == 4) {  
                if (msg.what == 1) {  
                    dataListView.getChildAt(msg.arg2).setBackgroundResource(  
                            R.drawable.itemback);  
                }  
            }  
            super.handleMessage(msg);  
        }  
    };  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        dataListView = (ListView) findViewById(R.id.lv_list);  
        list = new ArrayList<HashMap<String, Object>>();  
        int count = 20;  
        HashMap<String, Object> map;  
        for (int i = 1; i <= count; i++) {  
            map = new HashMap<String, Object>();  
            map.put("num", i+ "");  
            map.put("a1", "²=");  
            map.put("a2", ""+i*i);  
            list.add(map);  
        }  
        listAdapter = new SimpleAdapter(this, list, R.layout.datalist,  
                new String[] { "num", "a1", "a2" }, new int[] { R.id.tv_num,  
                        R.id.tv_numx, R.id.tv_numy });  
        dataListView.setAdapter(listAdapter);  
        dataListView.setOnItemClickListener(new OnItemClickListener() {  
    
            @Override  
            public void onItemClick(AdapterView<?> arg0, View view, int arg2,  
                    long arg3) {  
                TextView tv=(TextView)view.findViewById(R.id.tv_num);  
                Toast.makeText(getBaseContext(), "您点击了第" + tv.getText()+"行", 2000).show();  
            }  
        });  
        dataListView.setOnItemLongClickListener(new OnItemLongClickListener() {  
            public boolean onItemLongClick(AdapterView<?> arg0, View view,  
                    int position, long id) {  
                location = position;  
                final View nowView = (View) view.findViewById(R.id.ib_edit);  
                Toast.makeText(getBaseContext(), "location=" + location, 2000)  
                        .show();  
                OnClickListener listener = new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int which) {  
                        if (which == 0) {  
                            Toast.makeText(getBaseContext(), "编辑", Toast.LENGTH_LONG).show();  
                        } else if (which == 1) {  
                            Toast.makeText(getBaseContext(), "删除", Toast.LENGTH_LONG).show();  
                        }  
                    }  
                };  
                dataListView.getChildAt(location).setBackgroundResource(  
                        R.drawable.item_frame);  
                Message message = new Message();  
                message.arg1 = 4;  
                message.arg2 = location;  
                message.what = 1;  
                mHandler.sendMessageDelayed(message, 500);  
                String[] Menu = { "编辑", "删除" };  
    
                new AlertDialog.Builder(MainActivity.this).setItems(Menu,  
                        listener).show();  
                return false;  
            }  
        });  
    }  
    
    public void OnItemEditClick(View v) {  
        RelativeLayout layout = (RelativeLayout) v.getParent();  
        TextView tv1=(TextView)layout.findViewById(R.id.tv_num);  
        TextView tv2=(TextView)layout.findViewById(R.id.tv_numx);  
        TextView tv3=(TextView)layout.findViewById(R.id.tv_numy);  
        ImageButton ib=(ImageButton)layout.findViewById(R.id.ib_edit);  
        String str="按钮"+tv1.getText()+"点击啦n"+tv1.getText()+tv2.getText()+tv3.getText();  
        Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();  
    }  
    

    }

    package com.test.customlistview;

    import java.util.ArrayList;
    import java.util.HashMap;

    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ImageButton;
    import android.widget.ListView;
    import android.widget.RelativeLayout;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemLongClickListener;

    public class MainActivity extends Activity {

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    ListView dataListView;
    SimpleAdapter listAdapter;
    ArrayList<HashMap<String, Object>> list;
    private int location;
    Handler mHandler = new Handler() {
    
        @Override
        public void handleMessage(Message msg) {
            if (msg.arg1 == 1) {
    
            } else if (msg.arg1 == 2) {
    
            } else if (msg.arg1 == 4) {
                if (msg.what == 1) {
                    dataListView.getChildAt(msg.arg2).setBackgroundResource(
                            R.drawable.itemback);
                }
            }
            super.handleMessage(msg);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        dataListView = (ListView) findViewById(R.id.lv_list);
        list = new ArrayList<HashMap<String, Object>>();
        int count = 20;
        HashMap<String, Object> map;
        for (int i = 1; i <= count; i++) {
            map = new HashMap<String, Object>();
            map.put("num", i+ "");
            map.put("a1", "²=");
            map.put("a2", ""+i*i);
            list.add(map);
        }
        listAdapter = new SimpleAdapter(this, list, R.layout.datalist,
                new String[] { "num", "a1", "a2" }, new int[] { R.id.tv_num,
                        R.id.tv_numx, R.id.tv_numy });
        dataListView.setAdapter(listAdapter);
        dataListView.setOnItemClickListener(new OnItemClickListener() {
    
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                    long arg3) {
                TextView tv=(TextView)view.findViewById(R.id.tv_num);
                Toast.makeText(getBaseContext(), "您点击了第" + tv.getText()+"行", 2000).show();
            }
        });
        dataListView.setOnItemLongClickListener(new OnItemLongClickListener() {
            public boolean onItemLongClick(AdapterView<?> arg0, View view,
                    int position, long id) {
                location = position;
                final View nowView = (View) view.findViewById(R.id.ib_edit);
                Toast.makeText(getBaseContext(), "location=" + location, 2000)
                        .show();
                OnClickListener listener = new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        if (which == 0) {
                            Toast.makeText(getBaseContext(), "编辑", Toast.LENGTH_LONG).show();
                        } else if (which == 1) {
                            Toast.makeText(getBaseContext(), "删除", Toast.LENGTH_LONG).show();
                        }
                    }
                };
                dataListView.getChildAt(location).setBackgroundResource(
                        R.drawable.item_frame);
                Message message = new Message();
                message.arg1 = 4;
                message.arg2 = location;
                message.what = 1;
                mHandler.sendMessageDelayed(message, 500);
                String[] Menu = { "编辑", "删除" };
    
                new AlertDialog.Builder(MainActivity.this).setItems(Menu,
                        listener).show();
                return false;
            }
        });
    }
    
    public void OnItemEditClick(View v) {
        RelativeLayout layout = (RelativeLayout) v.getParent();
        TextView tv1=(TextView)layout.findViewById(R.id.tv_num);
        TextView tv2=(TextView)layout.findViewById(R.id.tv_numx);
        TextView tv3=(TextView)layout.findViewById(R.id.tv_numy);
        ImageButton ib=(ImageButton)layout.findViewById(R.id.ib_edit);
        String str="按钮"+tv1.getText()+"点击啦n"+tv1.getText()+tv2.getText()+tv3.getText();
        Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();
    }
    

    }


  • 相关阅读:
    调用webservice接口报错
    Java设计模式之使用反序列化的方式实现单例模式
    Java设计模式之使用枚举类的方式创建单例
    使用饿汉模式创建单例模式
    Java 查看运行生成的字节码文件 反汇编
    Java设计模式之--单例模式-使用懒汉模式创建
    git无法 cherry pick到其他分支
    Android之Handler用法总结
    Java之观察者模式
    Android之Activity与Service通信
  • 原文地址:https://www.cnblogs.com/aikongmeng/p/3697311.html
Copyright © 2020-2023  润新知