listview中点击事件

      listview这个组件很常用而且很好用,基本每个APP都有,我们常常设计是这个listview需要点击然后弹出dialog,或者另外的activity都有,具体就是看需求。不多说直接看代码上图


package com.nian.preferential.smenu;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.TextView;

import com.nian.preferential.HomeActivity;
import com.nian.preferential.R;
/**
 * 
 * 
 * @author zouyinglong
 *
 */
public class ChooseCity extends Activity {

   private static final String TAG = "ChooseCity";
   
   TextView topText;
   Intent gIntent;
   ListView listView;
   LayoutInflater inflater;
   View headView;
   Button headItemBut;
   ChooseAdapter coAdapter;
   
   String DATA[][] = new String [][] {//listview显示的数据,但是在开发过程中数据一般来自接口
//接受后台的数据,所以常常会调用json的方法,一般会用到异步机制AsyncTask,这里就不解释了。这几个城市
//不多我就直接写出来
     /*eg  A , 地区*/ 
      {"B","北京"},
      {"C","成都","重庆","长春","长沙","常州"},
      {"D","大连"},
      {"F","福州"},
      {"G","广州","贵阳"},
      {"H","杭州","哈尔滨","合肥","海口"},
      {"J","济南"},
      {"K","昆明"},
      {"L","兰州"},
      {"N","南京","南昌","宁波","南宁"},
      {"Q","青岛"},
      {"S","上海","深圳","沈阳","苏州","石家庄"},
      {"T","天津","太原"},
      {"W","武汉","无锡","温州"},
      {"X","西安","厦门"},
      {"Y","烟台","扬州"},
      {"Z","珠海","郑州"},
   
   };
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      requestWindowFeature(Window.FEATURE_NO_TITLE);
      super.onCreate(savedInstanceState);
      setContentView(R.layout.choose_city);//导入xml文件
     initResourceRefs();//分别执行这2个方法,只是这2个方法代替了initview
     initSettings();
//如果是用异步获取listview里面的数据,这就要初始化searchAsyncTask("", "", true);
//后面你就要写上这个方法private void searchAsyncTask(final CityEntity XXXX){
//                   new AsyncTask
  }
   private void initResourceRefs(){
      
      topText = (TextView)findViewById(R.id.choose_top_tital);
      listView = (ListView)findViewById(R.id.choose_city);
      gIntent = getIntent();
      inflater = LayoutInflater.from(this);//LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()

  headView = inflater.inflate(R.layout.choose_city_headview, null);//去加载找到在这个xml
    headItemBut = (Button)headView.findViewById(R.id.choose_headview_but);
      coAdapter = new ChooseAdapter();//调用适配器,所谓适配器就是你的activity的数据怎么合适
/恰当的且刚好匹配的显示在你的xml上
 }
   private void initSettings(){
     final String city = gIntent.getStringExtra("NowCity");//通过intent带来的数据,我获//取到这里
     topText.setText(getString(R.string.choose_city_text, city));
      
      listView.addHeaderView(headView);
      headItemBut.setText(getString(R.string.choose_current_city, getString(R.string.home_location_default)/*完成定位系统后切换*/));
      listView.setAdapter(coAdapter);
      headView.setClickable(true);
      headView.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {//点击的方法事件
           Intent intent = new Intent(ChooseCity.this ,HomeActivity.class);
            ChooseCity.this.setResult(RESULT_CANCELED);;
            ChooseCity.this.finish();
         }
      });
   }
   @Override
   protected void onDestroy() {
      // 退出的时候 返回一个值
      setResult(RESULT_CANCELED);
      super.onDestroy();
   }
    // listView  adapter
   private class ChooseAdapter extends BaseAdapter{//这里写上适配器,适配器无非就3+1,3种
//我们已知,另外的1种一般就是我们自定义的,用多了常常是自定义适配器,但一定要继承BaseAdapter
      @Override
      public int getCount() {
         // TODO Auto-generated method stub
         return DATA.length;
      }

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

      @Override
      public long getItemId(int position) {
         // TODO Auto-generated method stub
         return position;
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
//这是写适配器最重要的方法,你数据怎么显示在xml都是在这个方法里处理
        ChooseCityListItem item ;
         if(convertView == null){//view的数据放到convertview中,这里convertview就
//你listview放的数据item
           item = new ChooseCityListItem(ChooseCity.this);
            convertView = item.getView();
            convertView.setTag(item);//去取你这里的item
        }else{
            item =(ChooseCityListItem)convertView.getTag();//getTag相当于你数据都放到这个
//gettag()方法里了
        }
          item.bind(getData(position));
         return convertView;
      }
       
      public String[] getData(int position){
         String []a = new String[DATA[position].length];;
         for(int i=0 ;i<DATA[position].length ;i++){
            a[i]=DATA[position][i];
         }
         return a;
      }
   }
   
   /**
    *
    * item
    */
   public class ChooseCityListItem {
      
      public static final String TAG = "ChooseCityListItem";
      private Context mContext;
      private String[] mData;
      private TextView text;
      private GridView grid;
      ChooseItemAdapter ciAdapter;
      View mView;

      public ChooseCityListItem(Context context) {
         mContext = context;
         init();
      }

      public View getView(){
         return mView;
      }

      public void bind(String[]data){
         mData = data;
         if(ciAdapter == null){
            ciAdapter = new ChooseItemAdapter();
            grid.setAdapter(ciAdapter);
         }else{
            ciAdapter.notifyDataSetChanged();
         }
         text.setText(mData[0]);
      }

      public void init(){
         LayoutInflater inflater = LayoutInflater.from(mContext);
         mView =inflater.inflate(R.layout.choose_city_list_item, null);
         text = (TextView)mView.findViewById(R.id.choose_list_item_text);
         grid = (GridView)mView.findViewById(R.id.choose_list_item_grid);
         
      }
      // listView 中的  GridView  adapter
      private class ChooseItemAdapter extends BaseAdapter{

         @Override
         public int getCount() {
            // TODO Auto-generated method stub
            return mData.length-1;
         }

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

         @Override
         public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position+1;
         }

         @Override
         public View getView(int position, View convertView, ViewGroup parent) {
            final TextView text ;
            if(convertView == null){
               text = new TextView(mContext);
               text.setTextColor(Color.BLACK);
               text.setGravity(Gravity.CENTER_HORIZONTAL);
               text.setTextSize(20);
               text.setClickable(true);
               text.setOnClickListener(new TextView.OnClickListener() {
                  
                  @Override
                  public void onClick(View v) {
                     String city= text.getText().toString();
                     Intent intent = new Intent(ChooseCity.this ,HomeActivity.class);
                     intent.putExtra("Choose_city", city);
                     ChooseCity.this.setResult(RESULT_OK, intent);
                     ChooseCity.this.finish();
                  }
               });
            }else{
               text = (TextView)convertView ;
            }
     
               text.setText(mData[position+1]);         
            return text;
         }
       
        private void setTextSeting(){
           
        }
         
      }

   }

}
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"
    android:background="@color/back_color" >
    <TextView android:id="@+id/choose_top_tital" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="@style/top_text_style"
        android:text="@string/home_location_default"
        />
   <ListView android:id="@+id/choose_city"
       android:layout_width="fill_parent"
       android:layout_height="0.0dip"
       android:layout_weight="1.0"
       android:cacheColorHint="#00000000"
       android:scrollbars="@null"
       />    
    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_city1"
        android:text="@string/choose_citys_more"
        android:gravity="center"
        android:textSize="15sp"
        />
   
</LinearLayout>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值