关于ListView中控件点击事件与Item点击事件冲突的问题
2016-08-16 16:59
489 查看
原因是button强制获取了item的焦点,只要设置button的focusable为false即可。
1 import android.app.Activity; 2 import android.app.AlertDialog; 3 import android.content.Context; 4 import android.os.Bundle; 5 import android.view.LayoutInflater; 6 import android.view.Menu; 7 import android.view.View; 8 import android.view.ViewGroup; 9 import android.widget.AdapterView; 10 import android.widget.BaseAdapter; 11 import android.widget.Button; 12 import android.widget.ImageView; 13 import android.widget.ListView; 14 import android.widget.TextView; 15 import android.widget.Toast; 16 17 public class Audition1 extends Activity { 18 19 private ListView listView; 20 21 @Override 22 public void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_audition1); 25 initComponents(); 26 27 } 28 29 private void initComponents() { 30 listView = (ListView) findViewById(R.id.listView); 31 listView.setAdapter(new MyAdapter(this)); 32 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 33 34 @Override 35 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 36 long arg3) { 37 Toast.makeText(getApplicationContext(), "item", 300).show(); 38 39 } 40 }); 41 } 42 43 @Override 44 public boolean onCreateOptionsMenu(Menu menu) { 45 getMenuInflater().inflate(R.menu.activity_audition1, menu); 46 return true; 47 } 48 49 public final class ViewHolder { 50 public TextView textView; 51 public Button button; 52 public ImageView imageView; 53 } 54 55 class MyAdapter extends BaseAdapter { 56 57 private LayoutInflater mInflater; 58 59 public MyAdapter(Context context) { 60 this.mInflater = LayoutInflater.from(context); 61 } 62 63 @Override 64 public int getCount() { 65 return 3; 66 } 67 68 @Override 69 public Object getItem(int position) { 70 return null; 71 } 72 73 @Override 74 public long getItemId(int position) { 75 return position; 76 } 77 78 @Override 79 public View getView(int position, View convertView, ViewGroup parent) { 80 ViewHolder holder = null; 81 if (convertView == null) { 82 holder = new ViewHolder(); 83 84 convertView = mInflater.inflate(R.layout.item, null); 85 holder.imageView = (ImageView) convertView 86 .findViewById(R.id.imageView); 87 holder.textView = (TextView) convertView 88 .findViewById(R.id.textViewId); 89 holder.button = (Button) convertView.findViewById(R.id.button); 90 holder.textView.setText("shit"); 91 holder.button.setOnClickListener(new View.OnClickListener() { 92 93 @Override 94 public void onClick(View v) { 95 AlertDialog.Builder builder = new AlertDialog.Builder( 96 Audition1.this); 97 builder.setMessage("dialog"); 98 builder.setTitle("title"); 99 builder.create(); 100 builder.show(); 101 } 102 }); 103 convertView.setTag(holder); 104 } else { 105 convertView.getTag(); 106 } 107 108 return convertView; 109 } 110 111 } 112 113 }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/listView" android:layout_width="wrap_content" android:layout_height="fill_parent" android:padding="@dimen/padding_medium" tools:context=".Audition1" android:dividerHeight="5dp"/> </RelativeLayout>
1 import android.app.Activity; 2 import android.app.AlertDialog; 3 import android.content.Context; 4 import android.os.Bundle; 5 import android.view.LayoutInflater; 6 import android.view.Menu; 7 import android.view.View; 8 import android.view.ViewGroup; 9 import android.widget.AdapterView; 10 import android.widget.BaseAdapter; 11 import android.widget.Button; 12 import android.widget.ImageView; 13 import android.widget.ListView; 14 import android.widget.TextView; 15 import android.widget.Toast; 16 17 public class Audition1 extends Activity { 18 19 private ListView listView; 20 21 @Override 22 public void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_audition1); 25 initComponents(); 26 27 } 28 29 private void initComponents() { 30 listView = (ListView) findViewById(R.id.listView); 31 listView.setAdapter(new MyAdapter(this)); 32 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 33 34 @Override 35 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 36 long arg3) { 37 Toast.makeText(getApplicationContext(), "item", 300).show(); 38 39 } 40 }); 41 } 42 43 @Override 44 public boolean onCreateOptionsMenu(Menu menu) { 45 getMenuInflater().inflate(R.menu.activity_audition1, menu); 46 return true; 47 } 48 49 public final class ViewHolder { 50 public TextView textView; 51 public Button button; 52 public ImageView imageView; 53 } 54 55 class MyAdapter extends BaseAdapter { 56 57 private LayoutInflater mInflater; 58 59 public MyAdapter(Context context) { 60 this.mInflater = LayoutInflater.from(context); 61 } 62 63 @Override 64 public int getCount() { 65 return 3; 66 } 67 68 @Override 69 public Object getItem(int position) { 70 return null; 71 } 72 73 @Override 74 public long getItemId(int position) { 75 return position; 76 } 77 78 @Override 79 public View getView(int position, View convertView, ViewGroup parent) { 80 ViewHolder holder = null; 81 if (convertView == null) { 82 holder = new ViewHolder(); 83 84 convertView = mInflater.inflate(R.layout.item, null); 85 holder.imageView = (ImageView) convertView 86 .findViewById(R.id.imageView); 87 holder.textView = (TextView) convertView 88 .findViewById(R.id.textViewId); 89 holder.button = (Button) convertView.findViewById(R.id.button); 90 holder.textView.setText("shit"); 91 holder.button.setOnClickListener(new View.OnClickListener() { 92 93 @Override 94 public void onClick(View v) { 95 AlertDialog.Builder builder = new AlertDialog.Builder( 96 Audition1.this); 97 builder.setMessage("dialog"); 98 builder.setTitle("title"); 99 builder.create(); 100 builder.show(); 101 } 102 }); 103 convertView.setTag(holder); 104 } else { 105 convertView.getTag(); 106 } 107 108 return convertView; 109 } 110 111 } 112 113 }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/listView" android:layout_width="wrap_content" android:layout_height="fill_parent" android:padding="@dimen/padding_medium" tools:context=".Audition1" android:dividerHeight="5dp"/> </RelativeLayout>
相关文章推荐
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- ListView中控件点击事件与Item点击事件冲突的问题
- Android ListView的Item点击事件和Item里控件点击事件冲突问题解决
- android ListView 中点击事件与其他控件点击时间冲突问题与自动滚动
- 关于ListView触摸事件和点击Item事件冲突解决方法
- Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法
- 关于ListView中Item点击事件,动态改变Item中控件属性
- 解决Listview的item和里面控件点击事件冲突
- 关于ListView触摸事件和点击Item事件冲突解决方法
- ListView的item单击事件与item布局中控件单击事件的冲突问题
- 自定义SwipeRefreshLayout 嵌套listview 并解决item点击事件焦点冲突问题
- Android 解决listView item点击事件被其他控件屏蔽的问题
- 解决Listview中Item中控件设置点击事件而Item点击事件失效问题
- listview或gridview中item的点击事件与控件点击事件冲突的解决
- 解决ListView的item监听事件个子控件监听事件冲突问题
- ListView Item 点击事件 被重写BaseAdapter里面子控件抢去问题
- Listview的item和里面控件点击事件冲突
- 关于listView中adapter按钮点击事件冲突问题