android适配器及监听点击和滚动在ListView中的使用

package com.example.demon08;

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

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity implements OnItemClickListener,OnScrollListener{

private ListView listView;
private ArrayAdapter<String> arr_adapter;
private SimpleAdapter simp_adapter;
private List<Map<String,Object>>dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView=(ListView) findViewById(R.id.listView);
//新建一个适配器
//ArrayAdapter(上下文,当前listView加载的每一个列表项所对应的布局文件,数据源)
//适配器加载数据源
String[]arr_data={"战斗暴龙兽","机械暴龙兽","丧尸暴龙兽","暴龙兽","亚古兽","滚球兽"};
arr_adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr_data);
//SimpleAdapter
//上下文
//数据源List<? extends Map<String, ?>> data一个Map所组成List集合,
//每一个Map都会去对应ListView列表中的一行
//每一个Map(键-值对)中的键必须包含所有在from中指定的键
//resource:列表项的布局文件ID
//from:Map中的键名
//绑定数据视图中的ID,与from成对应关系
dataList=new ArrayList<Map<String,Object>>();
simp_adapter=new SimpleAdapter(this,getData(),R.layout.item,new String[]{"pic","text"},new int[]{R.id.pic,R.id.text});
//视图加载适配器
//listView.setAdapter(arr_adapter);
listView.setAdapter(simp_adapter);
listView.setOnItemClickListener(this);
listView.setOnScrollListener(this);
}

private List<Map<String,Object>> getData(){
for(int i=0;i<20;i++){
Map<String,Object> map=new HashMap<String,Object>();
map.put("pic",R.drawable.ic_launcher);
map.put("text","刀冲"+i);
dataList.add(map);
}

return dataList;
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub

}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
switch(scrollState){
case SCROLL_STATE_FLING:
Log.i("Main","用户在手指离开屏幕之前,由于用力滑了一下,视图仍依靠惯性继续滑动");
Map<String,Object>map=new HashMap<String,Object>();
map.put("pic",R.drawable.ic_launcher);
map.put("text","增加项");
dataList.add(map);
simp_adapter.notifyDataSetChanged();
break;
case SCROLL_STATE_IDLE:
Log.i("Main","视图已经停止滑动");
break;
case SCROLL_STATE_TOUCH_SCROLL:
Log.i("Main","手指没有离开屏幕,视图正在滑动");
break;
}
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
String text=listView.getItemAtPosition(position)+"";
Toast.makeText(this,"position="+position+" text="+text,Toast.LENGTH_SHORT).show();
}

}

时间: 2024-08-08 09:56:05

android适配器及监听点击和滚动在ListView中的使用的相关文章

Android开发系列(十四):ListView用法、对ListView监听的三种方法以及ListView中Adapter的使用方法

一.ArrayAdapter的介绍以及ListView的用法: Adapter是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面.就是用来绑定数据用的. 用一个小例子来介绍一下: public class FriendActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea

Android监听点击事件实现的三种方法

监听点击事件实现的三种方法:1.匿名内部类2.外部类3.直接实现接口 1.匿名内部类: package com.jereh.calculator; import android.content.Context; import android.os.Bundle; import android.os.PersistableBundle; import android.support.design.widget.FloatingActionButton; import android.support

Android监听连续点击次数代码实现

一般实现 我们知道,一般实现双击事件,可以通过new OnClickListener()监听点击事件,然后记录前后两次点击距离开机的时间,由时间差在一定范围实现,代码如下: long firstClickTime = 0; @Override public void onClick(View view) { if(firstClickTime > 0){ long secondClickTime = SystemClock.uptimeMillis();//距离上次开机时间 long dtime

Android使用ContentObserver监听数据库变化(转自:http://www.blogjava.net/zhaojianhua/archive/2011/10/27/362204.html)

android 使用contentobserver监听数据库内容变化 android 使用contentobserver监听数据库内容变化 在 android中经常会用到改变数据库内容后再去使用数据库更新的内容,很多人会重新去query一遍,但是这样的问题就是程序会特别占内存,而且有可能 会搂关cursor而导致程序内存未释放等等.其实android内部提供了一种ContentObserver的东西来监听数据库内容的变化.ContentObserver 的构造函数需要一个参数Hanlder,因为

IOS之UI--自定义按钮实现代理监听点击事件

前言: Objective-C提供的按钮监听事件的方法是 不含参数的监听方法 [button实例对象 addTarget:self action:@selector(func) forControlEvents:UIControlEventTouchUpInside]; 含参数的监听方法 [button实例对象 addTarget:self action:@selector(func:) forControlEvents:UIControlEventTouchUpInside]; 下面通过代理的

quick-cocos2d-x android返回键监听并实现原生退出对话框

这两天终于闲了一下,就顺手又把quick捡起来又学了学,一直都觉得quick比cocos2dx那套lua绑定要方便许多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇. 首先说明一下使用的quick版本--2.2.5. 直接上代码 function MainScene:addBackEvent() if device.platform == "android" then self.touchLayer = display.newLayer() self.touchL

CCLayer 监听点击事件

根据CCLayer 的源代码,若touchEnable为true, 在onEnter(),onExit()分别会注册监听及解除监听,这样一样就不会自己写监听.需要注意的是默认监听多点触摸,即不会调用 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); 另外CCLayer提供了一个setTouchMode(ccTouchesMode mode) 来设定监听点击的类型,typedef enum { kCCTouchesAllAtO

Android短信监听(三)——利用Loader实现短信监听

MainActivity如下: package cc.c; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.app.LoaderManager.LoaderCallbacks; import android.content.Context; import android.content.Loader; import android.database.Curs

Android短信监听(二)——利用ContentObserver实现短信监听

MainActivity如下: package cc.testsmslistener; import cc.testsmslistener.SMSContentObserver.MessageListener; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; import android.app.Activity; /** *