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

来源:互联网 发布:底火帽在淘宝叫什么 编辑:程序博客网 时间:2024/05/17 07:09

原因是button强制获取了item的焦点,只要设置button的focusable为false即可。

import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;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) 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>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
 
    <TextView
        android:id="@+id/textViewId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        />
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:contentDescription="@string/app_name"
        />
 
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="press"
        android:focusable="false"
        />
 
</LinearLayout>

0 0
原创粉丝点击