ListView和数据适配器SimpleAdapter例子

一:activity_main.xml文件,主屏幕

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.demo.yaokj.demo.MainActivity">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

二、因为 SimpleAdapter简单数据适配器,会用到一个样式的xml,也先放出来,item.xm

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:src="@drawable/qq20160429002618"
        />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textColor="#000000"
        android:text="demo"
        />

</LinearLayout>

三、activity类的实现:

package com.demo.yaokj.demo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Callable;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener,AbsListView.OnScrollListener{
    private ListView listView;
    private ArrayAdapter<String> arrayAdapter;
    private SimpleAdapter simpleAdapter;
    private List<Map<String,Object>> datas;

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

        listView = (ListView)findViewById(R.id.listView);


        listView.setOnItemClickListener(this);//这个必须要有
        listView.setOnScrollListener(this);
        //generateArrayAdapter();

        generateSimpleAdapter();


    }

    /**
     * 生成简单适配器
     */
    private void generateSimpleAdapter(){
        simpleAdapter = new SimpleAdapter(this,getDatas(),
                R.layout.item,new String[]{"pic","text"},
                new int[]{R.id.imageView,R.id.textView});

        listView.setAdapter(simpleAdapter);
    }

    private List<Map<String,Object>> getDatas(){
        datas = new ArrayList<>();

        for (int i = 0; i < 20; i++) {
            Map<String,Object> data = new HashMap<>();
            data.put("pic",R.drawable.qq20160429002618);
            data.put("text","simpleAdapter yaokj_"+i);
            datas.add(data);
        }

        return datas;
    }

    /**
     * 生成数组适配器
     */
    private void generateArrayAdapter(){
        List<String> objects = new ArrayList<>();
        objects.add("arrayAdapter yaokj 1");
        objects.add("arrayAdapter yaokj 2");
        objects.add("arrayAdapter yaokj 3");
        objects.add("arrayAdapter yaokj 4");
        objects.add("arrayAdapter yaokj 5");
        arrayAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,objects);
        listView.setAdapter(arrayAdapter);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String text = listView.getCheckedItemPosition()+"";
        Toast.makeText(this,"positin="+position+" text="+text,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        switch (scrollState) {
            case SCROLL_STATE_FLING:
                Log.i("main","scroll_fling,手指没有放开");
                break;
            case SCROLL_STATE_IDLE:
                Log.i("main","scroll_idle,拖动结束时触发,手指放开了");
                Map<String,Object> data = new HashMap<>();
                data.put("pic",R.drawable.qq20160429002618);
                data.put("text","拖动时添加的选项");
                datas.add(data);
                simpleAdapter.notifyDataSetChanged();//必须要通知简单适配器数据发生变化了
                break;
            case SCROLL_STATE_TOUCH_SCROLL:
                Log.i("main","scroll_touch_scroll:触摸并拖动时触发,手指没有放开");
                break;
        }
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        Log.i("main","on scroll滚动");
    }
}


转载于:https://my.oschina.net/jamaly/blog/668458

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值