您的位置:首页 > 移动开发 > Android开发

Android ListView相关功能介绍

2015-07-31 11:55 513 查看
本文主要是对ListView应用的讲解,代码中有相关注释。

1.MainActivity.java

public class MainActivity extends Activity{
	
	@SuppressWarnings("unused")
	private TextView mtitle;
	private Button btn1;
	private Button btn2;
	private Button btn3;
	private Button btn4;
	
	 @Override
	public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.main);
	        
	        init();
	 }
	 
	 private void init() {
		 mtitle = (TextView)findViewById(R.id.mtitle);
		 btn1 = (Button)findViewById(R.id.view1_btn);
		 btn2 = (Button)findViewById(R.id.view2_btn);
		 btn3 = (Button)findViewById(R.id.view3_btn);
		 btn4 = (Button)findViewById(R.id.view4_btn);
		 
		 btn1.setOnClickListener(btn1Listener);
		 btn2.setOnClickListener(btn2Listener);
		 btn3.setOnClickListener(btn3Listener);
		 btn4.setOnClickListener(btn4Listener);
	 }
	 
	 private View.OnClickListener btn1Listener = new View.OnClickListener() {

			@Override
			public void onClick(View v) {
			
				Intent intent = new Intent(MainActivity.this, SimpleListViewActivity.class);
				startActivity(intent);
			}
		};
		
		 private View.OnClickListener btn2Listener = new View.OnClickListener() {

				@Override
				public void onClick(View v) {
				
					Intent intent = new Intent(MainActivity.this, SimpleCursorListViewActivity.class);
					startActivity(intent);
				}
			};
			
			 private View.OnClickListener btn3Listener = new View.OnClickListener() {

					@Override
					public void onClick(View v) {
					
						Intent intent = new Intent(MainActivity.this, SimpleAdapterListViewActivity.class);
						startActivity(intent);
					}
				};
				
				 private View.OnClickListener btn4Listener = new View.OnClickListener() {

						@Override
						public void onClick(View v) {
						
							Intent intent = new Intent(MainActivity.this, ListViewButtonActivity.class);
							startActivity(intent);
						}
					};
	

}


2.SimpleListViewActivity.java

public class SimpleListViewActivity extends Activity {
	 
    private ListView listView;
    //private List<String> data = new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
         
        listView = new ListView(this);
      //等同于  listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
        ListAdapter listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData());
        listView.setAdapter(listAdapter);
        setContentView(listView);
    }
     
    private List<String> getData(){
         
        List<String> data = new ArrayList<String>();
        data.add("测试数据1");
        data.add("测试数据2");
        data.add("测试数据3");
        data.add("测试数据4");
         
        return data;
    }
}


3.SimpleCursorListViewActivity.java

@SuppressWarnings("deprecation")
public class SimpleCursorListViewActivity extends Activity{
	 private ListView listView;
	    //private List<String> data = new ArrayList<String>();
	    @Override
	 public void onCreate(Bundle savedInstanceState){
	        super.onCreate(savedInstanceState);
	         
	        listView = new ListView(this);
	         
	        Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
	        startManagingCursor(cursor);
	         
	        ListAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_expandable_list_item_1, 
	                cursor,
	                new String[]{People.NAME}, 
	                new int[]{android.R.id.text1});
	         
	        listView.setAdapter(listAdapter);
	        setContentView(listView);
	    }
}


4.SimpleAdapterListViewActivity.java

public class SimpleAdapterListViewActivity extends ListActivity{
	 // private List<String> data = new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.vlist,
                new String[]{"title","info","img"},
                new int[]{R.id.title,R.id.info,R.id.img});
        setListAdapter(adapter);
    }
 
    private List<Map<String, Object>> getData() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("title", "G1");
        map.put("info", "google 1");
        map.put("img", R.drawable.i1);
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("title", "G2");
        map.put("info", "google 2");
        map.put("img", R.drawable.i2);
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("title", "G3");
        map.put("info", "google 3");
        map.put("img", R.drawable.i3);
        list.add(map);
         
        return list;
    }
}


5.ListViewButtonActivity.java

public class ListViewButtonActivity extends ListActivity {
	private String TAG="ListViewButton";
	 private List<Map<String, Object>> mData;
     
	    @Override
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        mData = getData();
	        MyAdapter adapter = new MyAdapter(this);
	        setListAdapter(adapter);
	    }
	 
	    private List<Map<String, Object>> getData() {
	        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
	 
	        Map<String, Object> map = new HashMap<String, Object>();
	        map.put("title", "G1");
	        map.put("info", "google 1");
	        map.put("img", R.drawable.i1);
	        list.add(map);
	 
	        map = new HashMap<String, Object>();
	        map.put("title", "G2");
	        map.put("info", "google 2");
	        map.put("img", R.drawable.i2);
	        list.add(map);
	 
	        map = new HashMap<String, Object>();
	        map.put("title", "G3");
	        map.put("info", "google 3");
	        map.put("img", R.drawable.i3);
	        list.add(map);
	         
	        return list;
	    }
	     
	    // ListView 中某项被选中后的逻辑
	    @Override
	    protected void onListItemClick(ListView l, View v, int position, long id) {
	         
	        Log.d(TAG, (String)mData.get(position).get("title"));
	    }
	     
	    /**
	     * listview中点击按键弹出对话框
	     */
	    public void showInfo(){
	        new AlertDialog.Builder(this)
	        .setTitle("我的listview")
	        .setMessage("介绍...")
	        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
	            @Override
	            public void onClick(DialogInterface dialog, int which) {
	            }
	        })
	        .show();
	         
	    }
	    
	    public final class ViewHolder{
	        public ImageView img;
	        public TextView title;
	        public TextView info;
	        public Button viewBtn;
	    }
	     
	     
	    @SuppressLint("InflateParams") 
	    public class MyAdapter extends BaseAdapter{
	 
	        private LayoutInflater mInflater;
	       
	        public MyAdapter(Context context){
	            this.mInflater = LayoutInflater.from(context);
	        }
	        @Override
	        public int getCount() {
	            // TODO Auto-generated method stub
	            return mData.size();
	        }
	 
	        @Override
	        public Object getItem(int arg0) {
	            // TODO Auto-generated method stub
	            return null;
	        }
	 
	        @Override
	        public long getItemId(int arg0) {
	            // TODO Auto-generated method stub
	            return 0;
	        }
	 
	        @Override
	        public View getView(int position, View convertView, ViewGroup parent) {
	             
	            ViewHolder holder = null;
	            if (convertView == null) {
	                 
	                holder=new ViewHolder();  
	                 
	                convertView = mInflater.inflate(R.layout.vlist2, null);
	                holder.img = (ImageView)convertView.findViewById(R.id.img);
	                holder.title = (TextView)convertView.findViewById(R.id.title);
	                holder.info = (TextView)convertView.findViewById(R.id.info);
	                holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);
	                convertView.setTag(holder);
	                 
	            }else {
	                 
	                holder = (ViewHolder)convertView.getTag();
	            }
	                    
	            holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));
	            holder.title.setText((String)mData.get(position).get("title"));
	            holder.info.setText((String)mData.get(position).get("info"));
	             
	            holder.viewBtn.setOnClickListener(new View.OnClickListener() {
	                 
	                @Override
	                public void onClick(View v) {
	                    showInfo();                 
	                }
	            });
	             
	             
	            return convertView;
	        }
	         
	    }
	  
	}


6.布局文件main.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" >
    
     <TextView 
            android:id="@+id/mtitle" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textColor="#000000"
            android:textSize="26dip" 
            android:textStyle="bold"
            android:layout_marginTop="60dip"
            android:text="ListView功能测试"
            android:layout_gravity="center"
            />
     
     <Button 
         android:id="@+id/view1_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="简单的ListView"
      />
     
      <Button
        android:id="@+id/view2_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SimpleCursorAdapter"
        />
      
       <Button android:id="@+id/view3_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SimpleAdapter"
       />
       
        <Button 
        android:id="@+id/view4_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="MyAdapter"
       />

</LinearLayout>


7.vlist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 
    <ImageView 
        android:id="@+id/img" 
        android:layout_width="60dip"
        android:layout_height="60dip"
        android:layout_margin="5px"/>
 
    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
 
        <TextView 
            android:id="@+id/title" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textColor="#000000"
            android:textSize="24dip" 
            android:textStyle="bold"
            />
        <TextView 
            android:id="@+id/info" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textColor="#000000"
            android:textSize="15dip" 
           />
 
    </LinearLayout>
 
</LinearLayout>


8.vlist2.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
      <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
 
    <ImageView 
        android:id="@+id/img" 
        android:layout_width="60dip"
        android:layout_height="60dip"
        android:layout_margin="5px"/>
 
    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_marginRight="10dip">
 
        <TextView 
            android:id="@+id/title" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textColor="#000000"
            android:textSize="24dip" 
            android:textStyle="bold"
            />
        <TextView 
            android:id="@+id/info" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textColor="#000000"
            android:textSize="15dip" 
           />
 
    </LinearLayout>
 
    </LinearLayout>
    <Button 
        android:id="@+id/view_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"/>
</RelativeLayout>


9.AndroidManifest.xml文件配置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.th.mylistview"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
    
	<uses-permission android:name="android.permission.READ_CONTACTS">
	</uses-permission>
	
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.th.mylistview.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
   <activity
            android:name="com.th.mylistview.SimpleListViewActivity"/>   
    <activity
            android:name="com.th.mylistview.SimpleCursorListViewActivity"/>   
   <activity
            android:name="com.th.mylistview.SimpleAdapterListViewActivity"/>  
    <activity
            android:name="com.th.mylistview.ListViewButtonActivity"/>
    </application>

</manifest>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: