安卓listView學習筆記

1.普通實現listView效果 java

 模板文件 android

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:id="@+id/ll"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</LinearLayout>
動態建立TextView 
protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		LinearLayout lv = (LinearLayout) findViewById(R.id.ll);
		for (int i = 0; i < 10; i++) {
			TextView tv = new TextView(this);
			tv.setTextSize(20);
			tv.setTextColor(Color.BLACK);
			tv.setText("name"+i);
			lv.addView(tv);
		}
	}
2:自定義適配器
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:id="@+id/ll"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <ListView 
    android:id="@+id/lv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        ></ListView>
</LinearLayout>
package com.example.studyReturn;

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

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends Activity {
	private List<Map<String,String>> ls;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ls = new ArrayList<Map<String,String>>();
		for (int i = 0; i < 10; i++) {
			Map<String,String> mp = new HashMap<String, String>();
			mp.put("name", "name"+i);
			mp.put("number", "number"+i);
			ls.add(mp);
		}
		ListView lv = (ListView) findViewById(R.id.lv);
		lv.setAdapter(new MyAdapter());
	}
	
	class MyAdapter extends BaseAdapter
	{

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return ls.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 arg1, ViewGroup arg2) {
			//普通方式
			/*
			TextView tv = new TextView(getApplicationContext());
			Map<String,String> mp = ls.get(position);
			tv.setTextSize(20);
			tv.setTextColor(Color.BLACK);
			tv.setText(mp.get("name"));
			return tv;*/
			
			//高級方式
			Map<String,String> mp = ls.get(position);
			View view = View.inflate(getApplicationContext(), R.layout.list_item, null);
			TextView tview = (TextView) view.findViewById(R.id.tid);
			tview.setText(mp.get("name"));
			TextView nview = (TextView) view.findViewById(R.id.nid);
			nview.setText(mp.get("number"));
			return view;
		}
		
	}
}

高級方式須要建立另一個 list_item.xml佈局文件 app

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <TextView 
        android:id="@+id/tid"
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
        />
   <TextView 
      android:id="@+id/nid"
      android:layout_marginLeft="20dip"
      android:layout_width="wrap_content"
  	  android:layout_height="wrap_content"
      />
</LinearLayout>

3.ArrayAdapter ide

private String[] names = {"第一個","第二個","第三個","第四個"};
	private ListView lv;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		lv = (ListView) findViewById(R.id.lv);
		lv.setAdapter(new ArrayAdapter<>(this, R.layout.list_item, R.id.tid, names));
	}



佈局文件和上面自定義適配器同樣

SimpleAdapter 佈局

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		lv = (ListView) findViewById(R.id.lv);
		List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
		for(int i = 0;i < 10; i++){
			Map<String,Object> mp = new HashMap<String,Object>();
			mp.put("name", "第"+i);
			mp.put("icon", R.drawable.ic_launcher);//能夠隨機選擇圖片
			data.add(mp);
		}
		lv.setAdapter(new SimpleAdapter(
				this,data,
				R.layout.simple_adapter,new String[]{"name","icon"},
				new int[]{R.id.tid,R.id.img_id}
				)
		);
	}



list_simple_adapter.xml 佈局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
	<ImageView 
	  android:id="@+id/img_id"
	  android:layout_width="wrap_content"
  	  android:layout_height="wrap_content"
	    />    
   <TextView 
      android:id="@+id/tid"
      android:layout_marginLeft="20dip"
      android:layout_width="wrap_content"
  	  android:layout_height="wrap_content"
      />
</LinearLayout>
相關文章
相關標籤/搜索