Android学习笔记之ListView

Android学习笔记之ListView

一.ListView使用

1.先在xml里面创建ListView控件

 <ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

2.在主Activity中绑定并设置适配器,通过add方法添加列表项。

protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);//android.R.layout.simple_list_item_1系统资源
        adapter = new ArrayAdapter<ListCellData>(this, R.layout.list_cell);//自定义

        lv = (ListView) findViewById(R.id.listView);
        lv.setAdapter(adapter);

        adapter.add(new ListCellData("小明", "男", 15));

        lv.setOnItemClickListener(this);
        adapter.add("hello");
        adapter.add("world");
    }

3.通过onItemClick方法可以设置列表项被点击的事件。

@Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id)
    {
        ListCellData data = adapter.getItem(position);

        Toast.makeText(this, String.format("名字:%s, 性别:%s, 年龄: %d", data.getUserName(), data.getSex(), data.getAge()), Toast.LENGTH_SHORT).show();
    }

二.通过BaseAdapter创建有图标的ListView

public class CustomListViewAdapter extends BaseAdapter
{

    private Context context = null;

    public CustomListViewAdapter(Context context)
    {
        this.context = context;
    }


    public Context getContext()
    {
        return context;
    }


    private CustomListCellData[] data = new CustomListCellData[]{
            new CustomListCellData("img1", "dec img1", R.drawable.img1),
            new CustomListCellData("img2", "dec img2", R.drawable.img2),
            new CustomListCellData("img3", "dec img3", R.drawable.img3)
        };
//  private String[] data = new String[]{"eoe1","eoe2","eoe3","eoe4","eoe5","eoe6","eoe7","eoe8"};
    @Override
    public View getView(int position, View convertView, ViewGroup parent) //在呈现列表项的时候都会被执行
    {       

//      TextView tv = null;
//      
//      if (convertView != null)
//      {
//          tv = (TextView) convertView;
//      }
//      else
//      {
//          tv = new TextView(CustomListView.this);
//      }
//  
//      tv.setTextSize(30);
//      tv.setText(getItem(position));          
//      return tv;
        LinearLayout ll = null;
        if(convertView != null)
        {
            ll = (LinearLayout) convertView;
        }
        else {
            ll = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.custom_listcell, null);
        }

        CustomListCellData data = getItem(position);

        ImageView icon = (ImageView)ll.findViewById(R.id.icon);
        TextView name = (TextView) ll.findViewById(R.id.name);
        TextView dec = (TextView) ll.findViewById(R.id.dec);

        icon.setImageResource(data.iconId);
        name.setText(data.name);
        dec.setText(R.id.dec);

        return ll;
    }

    @Override
    public long getItemId(int position)
    {
        return position;
    }

//  @Override
//  public String getItem(int position)
//  {
//      return data[position];
//  }

    @Override
    public CustomListCellData getItem(int position)
    {
        return data[position];
    }

    @Override
    public int getCount()
    {
        return data.length;
    }
}

其中getView方法在呈现列表项的时候都会被执行。
关于LayoutInflater用法,详见博客LayoutInflater详解。
然后创建一个ListViewActivity调用这个适配器

public class CustomListViewActivity extends ListActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_listview_aty);
        setListAdapter(new CustomListViewAdapter(this));
    }
}

或者通过普通的activity来绑定ListView控件来实现适配器

public class CustomListView extends Activity
{
    private ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_listview);

        lv = (ListView) findViewById(R.id.lv);
        lv.setAdapter(new CustomListViewAdapter(this));
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值