zoukankan      html  css  js  c++  java
  • android ListView控件操作绑定数据、单击事件

    1、主界面main.xml 

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical">

       
         <LinearLayout
                
    android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
        
            <TextView
                
    android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:text="姓名"
                
    />
            
              <TextView
                
    android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:text="备注"   
                
    />
        </LinearLayout>  
        <ListView 
            
    android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView"
            
    />
                 
    </LinearLayout>

     2、ListView中项界面设计

    <?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
    ="horizontal" >

        <TextView
            
    android:layout_width="150dp"
            android:layout_height
    ="wrap_content"
            android:id
    ="@+id/testname"
            
    />
        
          <TextView
            
    android:layout_width="150dp"
            android:layout_height
    ="wrap_content"
            android:id
    ="@+id/testmemo"        
            
    />
    </LinearLayout> 
     


     3、使用SimpleCursorAdapter绑定数据

         /*

         * 使用SimpleCursorAdapter适配器绑定数据
         
    */
        private void bindData()
        {
            Cursor cursor=tService.findCursorSplitPage(0, 20,"");
            SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.item, cursor,
                    new String[]{"name","memo"},new int[]{R.id.testname,R.id.testmemo});
            listView.setAdapter(adapter);
        }
        

    4、使用SimpleAdapter绑定数据

        
        /*
         * 使用SimpleAdapter适配器绑定数据
         
    */
        private void bindData1()
        {
            List<testTable> list=tService.findSplitPage(0, 20, "");
            List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>();
            for(testTable t: list)
            {
                HashMap<String,Object> h=new HashMap<String, Object>();
                h.put("name", t.getName());
                h.put("memo", t.getMemo());
                h.put("id", t.getId());
                data.add(h);
            }
            SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.item, 
                    new String[]{"name","memo"},new int[]{R.id.testname,R.id.testmemo});
            listView.setAdapter(adapter);
        }

        

    5、使用自定义适配器绑定数据

        5.1、自定义适配器


    package org.jgw.adapter;
    import java.util.List;

    import org.jgw.entity.testTable;
    import org.jgw.hello.R;

    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;

    public class testTableAdapter extends BaseAdapter {

        private List<testTable> list;
        private Context context;
        private int layout;
        
        private LayoutInflater inflater;
        
        public testTableAdapter(List<testTable> list, Context context,int layout) 
        {        
            this.list = list;
            this.context = context;
            this.layout = layout;
            
            inflater =(LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        }

        /*
         * 获取总行数
         * @see android.widget.Adapter#getCount()
         
    */
        public int getCount() {
            return list.size();
        }

        /*
         * 根据索引获取数据
         * @see android.widget.Adapter#getItem(int)
         
    */
        public Object getItem(int position) {        
            return list.get(position);
        }

        /*
         * item的id,很少使用到
         * @see android.widget.Adapter#getItemId(int)
         
    */
        public long getItemId(int position) {        
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            
            ViewCache cache;
            if(convertView==null)
            {
                convertView = inflater.inflate(layout, null);
                cache=new ViewCache();
                cache.testname=(TextView)convertView.findViewById(R.id.testname);
                cache.testmemo=(TextView)convertView.findViewById(R.id.testmemo);
                convertView.setTag(cache);
                
            }
            else
            {
                cache=(ViewCache)convertView.getTag();        
            }
            
            testTable t=list.get(position);
            cache.testname.setText(t.getName());
            cache.testmemo.setText(t.getMemo());
            
            
            return convertView;
        }
        
        public final class ViewCache
        {
            public TextView testname;
            public TextView testmemo;
        }

    }

         5.2、应用自定义适配器绑定ListView 

         

         /*

         * 使用自定义适配器绑定数据

         */
        private void bindData2()
        {
            List<testTable> list=tService.findSplitPage(0, 20, "");
            testTableAdapter adapter=new testTableAdapter(list, getApplicationContext(), R.layout.item);
            listView.setAdapter(adapter);
        }
        
        

     6、给ListView的item添加OnClick事件


     package org.jgw.hello;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;

    import org.jgw.adapter.testTableAdapter;
    import org.jgw.entity.testTable;
    import org.jgw.service.testTableService;

    import android.app.Activity;
    import android.content.Intent;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.widget.AdapterView;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.SimpleCursorAdapter;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemClickListener;
    import android.telephony.SmsManager;
    import android.util.Log;
    import android.view.*;

    public class HellowordActivity extends Activity {
        /** Called when the activity is first created. */
        ListView listView;
        testTableService tService;
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            tService=new testTableService(getApplicationContext());
             
            
            listView=(ListView)this.findViewById(R.id.listView);
            //bindData();
            
    //bindData1();
            bindData2();
            
            listView.setOnItemClickListener(new ItemClick());
            
            
        }
        
        /*
         * item上的OnClick事件
         
    */
        public final class ItemClick implements OnItemClickListener {

            public void onItemClick(AdapterView<?> parent, View arg1, int position, long id) {
                
                
                ListView lview=(ListView)parent;
                testTable t=(testTable)lview.getItemAtPosition(position);            
                Toast.makeText(getApplicationContext(), t.getId()+"", 1).show();
            }

        }
  • 相关阅读:
    CCPlatformConfig(设置执行平台 iOS android win32等。。。)
    LeetCode Add Binary |My Solution
    actor中!(tell)与forward的差别
    二叉查找树(二叉排序树)创建,插入,删除操作。
    程序猿技术练级攻略
    poj 2236 Wireless Network 【并查集】
    leetcode 题解 || Letter Combinations of a Phone Number 问题
    创业之前 ——Paul Graham 最新博文
    linux-文件系统基本概念
    上拉电阻和下拉电阻的用处和区别
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/2614443.html
Copyright © 2011-2022 走看看