安卓listView学习笔记

1.普通实现listView效果

 模板文件

<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布局文件

<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

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>




转载于:https://my.oschina.net/u/729139/blog/423174

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值