android自定义dialog中点击listview的item事件关闭dialog

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void onClick(View v) {
View view = View.inflate(this, R.layout.layout_listview, null);
ListView lv = (ListView) view.findViewById(R.id.lv);
lv.setAdapter(new MyAdapter());
AlertDialog.Builder builder = new Builder(this);
final AlertDialog dialog = builder.setIcon(R.drawable.ic_launcher).setTitle("测试")
.setView(view).setPositiveButton("关闭", new DialogInterface.OnClickListener(){

@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub

}

}).show();

WindowManager manager = getWindowManager();
Display display = manager.getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
dialog.getWindow().setGravity(Gravity.BOTTOM |Gravity.LEFT);
dialog.getWindow().setLayout(width/2, height/4);
lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

dialog.dismiss();
Toast.makeText(MainActivity.this, "对话框消失了", Toast.LENGTH_SHORT).show();
}
});
}

private class MyAdapter extends BaseAdapter {

@Override
public int getCount() {

return 5;
}

@Override
public Object getItem(int position) {

return null;
}

@Override
public long getItemId(int position) {

return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
return View.inflate(MainActivity.this, R.layout.layout_item, null);

}

}
}

布局文件activity_main.xml

<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"
    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=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="弹出对话框" />

</RelativeLayout>

ListView布局layout_listview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

listview的item布局layout_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0dip"
    android:layout_height="0dip"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="AAA" />

    <TextView
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="BBB" />

    <TextView
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="CCC" />

    <TextView
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="DDD" />

</LinearLayout>

个人认为,这个例子适合初学者,没有什么技术含量

原文:http://blog.csdn.net/ydqwym/article/details/9471993

时间: 2024-10-08 18:43:21

android自定义dialog中点击listview的item事件关闭dialog的相关文章

Javascript中点击(click)事件的3种写法

方法一 <!DOCTYPE html> <html> <head> <title>Javascript中点击事件方法一</title> </head> <body> <button id="btn">click</button> <script type="text/javascript"> var btn = document.getElemen

点击ListView一个Item弹出窗体,窗体展示时添加动画效果切入

private class MyAppInfoItemClickListener implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> parent, View view, int position,long id) { // 在弹出之前先销毁已经弹出的窗体 destoryPopupWindow(); //保留当前的Item的位置坐标 currentIndex = position; /

Android自定义圆形按钮点击进度动画

一个月前我去面试的时候被人问到一个类似的问题,当时没答上来,一回家找了下资料:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0325/1603.html, 根据上面链接,我自己改了下半小时后实现了比较粗糙的效果,如下图,截图不太好见谅哈~ 具体分解成4个部分: 底部一个灰色的空心描边圈,中间一个文字,2边各一个半圆来做向上的动画: 具体代码: public class CircleBarTwoSider extends Vi

Android防止过快点击造成多次事件

问题 onClick事件是Android开发中最常见的事件.比如,一个submitButton,功能是点击之后会提交一个订单, 则一般代码如下,其中submitOrder()函数会跳转到下一页进行处理 : //代码0 submitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { submitOrder(); } }); 正常情况下这段代码是没什么问题的,但是Andro

Android防止过快点击造成多次事件 一行代码搞定,特别简单,可以复用

onClick事件是Android开发中最常见的事件,正常情况下这段代码是没什么问题的, 但是Android设备的机型性能等千差万别,如果碰到比较卡的手机, 则有可能出现submitOrder()函数跳转页面出现延迟的现象.碰到这种现象,则用户就很有可能再次点击一次, 从而造成函数被调用两次,出现重复订单的BUG. 解决方法 方案一:(不建议) 一般地,碰到这现象,首先就会想到的就是在点击之后把submitButton设置为不可点击: 此方法也确实有效,不过如果submitOrder()方法没有

Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)

Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListener为按钮绑定事件,如下所示: //1.获取控件 btn = (Button)findViewById(R.id.button1); //2.绑定事件 btn.setOnClickListener(new OnClickListener() { @Override public void onCl

关于Android自定义View中的onTouchEvent(MotionEvent event)事件监听

今天做一个自定义ViewGroup,通过addView动态添加子控件,为了省事,直接在父控件里重写public boolean onTouchEvent(MotionEvent event){}方法来监听当前触碰是哪个按钮,遇到点问题,所以写下来. 首先是点击效果只有 MotionEvent.ACTION_DOWN,这个把返回改为return true;就行了 然后是 getX()和getRawX()的区别,这个这篇博文有写到 http://www.cnblogs.com/foura/artic

点击android:listview列表item无反应的问题

今天遇到一个令人头疼的问题:我在Activity中的onCreate()方法中写了listView.setOnItemClickListener() 但是运行模拟器后点击ListView的Item时没有任何反应,以前这样写却不会出现这种情况, 后来百度多次才找到问题所在:(参考链接:http://ming.highgic.com/?p=198) 原来这个ListView的item里面有button,需要在xml布局文件中设置button属性,其中focusable是关键: android:foc

解决ListView中Item的子控件与Item点击事件冲突

经常会碰到在ListView中点击其中一个Item,会一并触发其子控件的点击事件,例如Item中的Button.ImageButton等,导致了点击Item中Button以外区域也会触发Button点击事件.在网上找了相关方法,这里记录下,亲测可行.. 1.在Item的xml文件根元素中添加属性:android:descendantFocusability="blocksDescendants" 2.在冲突的子控件中添加属性:android:focusable="false&