您的位置:首页 > 其它

关于ListView中控件点击事件与Item点击事件冲突的问题

2017-02-11 09:25 423 查看
public class Audition1 extends Activity {

    private ListView listView;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_audition1);

        initComponents();

    }

    private void initComponents() {

        listView = (ListView) findViewById(R.id.listView);

        listView.setAdapter(new MyAdapter(this));

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

                    long arg3) {

                Toast.makeText(getApplicationContext(), "item", 300).show();

            }

        });

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.activity_audition1, menu);

        return true;

    }

    public final class ViewHolder {

        public TextView textView;

        public Button button;

        public ImageView imageView;

    }

    class MyAdapter extends BaseAdapter {

        private LayoutInflater mInflater;

        public MyAdapter(Context context) {

            this.mInflater = LayoutInflater.from(context);

        }

        @Override

        public int getCount() {

            return 3;

        }

        @Override

        public Object getItem(int position) {

            return null;

        }

        @Override

        public long getItemId(int position) {

            return position;

        }

        @Override

        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder = null;

            if (convertView == null) {

                holder = new ViewHolder();

                convertView = mInflater.inflate(R.layout.item, null);

                holder.imageView = (ImageView)
4000
convertView

                        .findViewById(R.id.imageView);

                holder.textView = (TextView) convertView

                        .findViewById(R.id.textViewId);

                holder.button = (Button) convertView.findViewById(R.id.button);

                holder.textView.setText("shit");

                holder.button.setOnClickListener(new View.OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        AlertDialog.Builder builder = new AlertDialog.Builder(

                                Audition1.this);

                        builder.setMessage("dialog");

                        builder.setTitle("title");

                        builder.create();

                        builder.show();

                    }

                });

                convertView.setTag(holder);

            } else {

                convertView.getTag();

            }

            return convertView;

        }

    }

}

<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>

原因是button强制获取了item的焦点,只要设置button的focusable为false即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: