Android_listView_Listener

layout.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" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
 

</RelativeLayout>

main.java

package com.example.day08_listview_listener;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

    private ListView listView;
    public static String[] citys = {"长沙","上海","深圳","广州","北京","广东","杭州","北京","天津","嘉兴","永州","衡阳","西安"};
    private List<String> list;
    private Myadapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化控件
        listView = (ListView) findViewById(R.id.listview);
        list = new ArrayList<String>();
        for (int i = 0; i < citys.length; i++) {
            list.add(citys[i]);
        }
        adapter = new Myadapter();
        //设置适配器
        listView.setAdapter(adapter);
        //设置item点击事件
        listView.setOnItemClickListener(new OnItemClickListener() {
            /**
             * 当点击适配器控件的item的时候调用
             *     AdapterView<?> parent,表示的是设置该适配器的适配器控件
             *  View view,表示的是被点击的item的view
             *  int position, 表示的是与被点击item的view的索引
             *  long id 表示id,该值与getItemId的返回值对应
             */
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Log.i("MainActivity", "MainActivity--onItemClick--position"+position);
            }
        });
        //设置长按事件
        listView.setOnItemLongClickListener(new OnItemLongClickListener() {
            /**
             * 问题:当用户点击item的时间超过2s就会触发长按事件,如果同时设置了单击事件,会先触发长按,松开手时触发单击事件]
             * 返回值     false
             * 表示该方法不处理该事件(不消耗该事件),事件会交给其他的方法去处理
             *     返回值   true
             * 表示该方法消耗了该事件,该事件就不会交给其他的方法去调用
             */
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                    int position, long id) {
                //获取数据
                String dataArray = citys[position];//方法一
                String dataArray1 = (String) listView.getItemAtPosition(position);//方法二
                String dataArray2 = (String) adapter.getItem(position) ;//方法三
                String dataArray4 = (String) parent.getItemAtPosition(position);
                Log.i("MainActivity", "MainActivity--onItemLongClick--position"+position);
                return true;
            }
        });
        
        
    }
class Myadapter extends BaseAdapter{

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    3.实现getview
//             1.编写复杂样式的item布局
//             2.将xml文件转换成view
//             3.找到view中的控件
//             4.给控件设置值
//             5.返回view
            
            //第一种--获得布局加载器
            /*LayoutInflater layoutInflater   = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view = layoutInflater.inflate(R.layout.listview_item_city, null);*/
            //第二种
            /*LayoutInflater layoutInflater2 = LayoutInflater.from(MainActivity.this);
            View view = layoutInflater2.inflate(R.layout.listview_item_city, null);*/
            //第三种
//            LayoutInflater layoutInflater = MainActivity.this.getLayoutInflater();
//            View view = layoutInflater2.inflate(R.layout.listview_item_city, null);
            //第四种
            View view = View.inflate(MainActivity.this, R.layout.listview_item_city, null);



    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //    创建一个TextView 对象,设置参数并返回view
        TextView textView = new TextView(MainActivity.this);
        textView.setText(list.get(position));
        textView.setTextSize(30);
        return textView;
    }
    
}

}

 

原文地址:https://www.cnblogs.com/fangg/p/5734693.html