Android Studio ListView的item点击事件弹出AlertDialog,和item的滑动

首先看看效果图:

Android Studio ListView的item点击事件弹出AlertDialog,和item的滑动_第1张图片

点击弹出AlertDialog的确认框!

Android Studio ListView的item点击事件弹出AlertDialog,和item的滑动_第2张图片

(一)第一步,建立一个xml文件显示item的布局

student_item.xml




    

        

        

            

            

        
    

运行结果

(二):在你想要显示的布局文件里添加ListView

这里我选择的是新建一个xml文件

(三):就是ACtivity了

package com.example.hellohh.myapplication_listview;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends Activity implements AdapterView.OnItemClickListener,AbsListView.OnScrollListener {
    private ListView listView;
    private SimpleAdapter simpleAdapter;
    private List>dataList;

    String stu1 = new String( "同学1,学号1601030033,性别女,爱好唱歌" );
    String stu2 = new String( "同学2,学号1601030033,性别女,爱好唱歌" );
    String stu3 = new String( "同学3,学号1601030033,性别女,爱好唱歌" );
    String stu4 = new String( "同学4,学号1601030033,性别女,爱好唱歌" );
    String stu5 = new String( "同学甲,学号1601030033,性别女,爱好唱歌" );

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

        dataList = new ArrayList>(  );
        listView = (ListView) findViewById( R.id.lv1 );

//SimpleAdapter( MainActivity.this,getDate(),R.layout.student_item,new String[]{"ig1","tv1","tv2"},new int[]{R.id.ig1,R.id.tv1,R.id.tv2} );
//对应的参数详解:
        /**
         * context:上下文
         * data:数据源(List>data)一个Map所组成的List集合
         *      每一个Map都回去对应ListView列表中的一行
         *      每一个Map(键-值对)中的键必须包含所有在from中指定的键
         * resource:列表项的布局文件ID
         * from:Map中的键名
         * to:绑定数据视图中的ID,与form成对应关系
         */
        simpleAdapter = new SimpleAdapter( MainActivity.this,getDate(),R.layout.student_item,new String[]{"ig1","tv1","tv2"},new int[]{R.id.ig1,R.id.tv1,R.id.tv2} );
        listView.setAdapter( simpleAdapter ); //绑适配器
        listView.setOnItemClickListener( this );
        listView.setOnScrollListener( this );
    }
//获得数据:
    private List> getDate(){
        String s = new String( "A" );
        for(int i=1;i<=15;i++){
            Map map = new HashMap(  );
            map.put( "ig1",R.mipmap.A );
            map.put( "tv1","同学"+i );
            map.put( "tv2","查看同学"+i+"的详情" );
            dataList.add(map);
        }
        return dataList;
    }

//设置手指滑动
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        switch (scrollState) {
            case SCROLL_STATE_FLING:
                Log.i( "Main", "由于用户在手指离开前滑动,而手指离开后的惯性滑动" );
                Map map = new HashMap();
                map.put( "ig1", R.mipmap.A );
                map.put( "tv1", "同学" );
                map.put( "tv2", "查看同学的详情" );
                dataList.add( map );
                //自动提醒刷新数据
                simpleAdapter.notifyDataSetChanged();
                break;
            case SCROLL_STATE_IDLE:
                Log.i( "Main", "试图停止滑动" );
                break;
            case SCROLL_STATE_TOUCH_SCROLL:
                Log.i( "Main", "手指没有离开屏幕,试图正在滑动" );
                break;
        }
    }
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    }
//设置点击ITem事件
    @Override
    public void onItemClick(AdapterView parent, View view, int position, long id) {
        AlertDialog.Builder builder = new AlertDialog.Builder( MainActivity.this);

        if(position==0){
            builder.setTitle( "同学1" );//设置标题
            builder.setIcon( R.drawable.ic_launcher_background );
            builder.setMessage( stu1);
        }
        else if(position==1){
            builder.setTitle( "同学2" );//设置标题
            builder.setIcon( R.drawable.ic_launcher_background );
            builder.setMessage( stu2);
        }
        builder.setPositiveButton( "确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText( MainActivity.this,"点击了确定按钮", Toast.LENGTH_SHORT).show();
            }
        } );
        builder.setNegativeButton( "取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText( MainActivity.this,"点击了取消按钮", Toast.LENGTH_SHORT).show();
            }
        } );
        AlertDialog dialog = builder.create();
        dialog.show();
        //String text = listView.getItemAtPosition( position )+"";
        //Toast.makeText( this,"posistion="+position+" text="+text,Toast.LENGTH_SHORT ).show();
    }
}

这里我只写了两个列表的点击事件,根据需求自己添加

你可能感兴趣的:(Android Studio ListView的item点击事件弹出AlertDialog,和item的滑动)