AdapterView.OnItemSelectedListener.onItemSelected参数问题

youngwolf 2010-11-23 12:21:28
final String[] ContactsFliter = {Contacts.DISPLAY_NAME, BaseColumns._ID};
Cursor c = getContentResolver().query(Contacts.CONTENT_URI, ContactsFliter, null, null, null);
startManagingCursor(c);

ListAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2,
c, ContactsFliter,
new int[]{android.R.id.text1, android.R.id.text2});
m_ListView.setAdapter(adapter);
m_ListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
//请问,这里的arg3是什么东西?
}

问题在上面的注释里面,据文档介绍,arg3参数是:The row id of the item that is selected,但上面的例子中,arg3的值居然是数据库里面的BaseColumns._ID的值!百思不得其解。
注:我看的是2.2文档,但用的是2.1 API开发的。
...全文
4005 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
doudoubaba0101 2013-03-12
  • 打赏
  • 举报
回复
arg3是arg1在arg0中的索引id
lu188887 2011-06-15
  • 打赏
  • 举报
回复
我用的ARG2和ARG3的值不一样,ARG2从0开始,ARG3是1,3,5这样递增的数。。。不知道为什么
bill_shou 2011-05-26
  • 打赏
  • 举报
回复
我也有这个疑问,等结果
jsplove 2011-03-21
  • 打赏
  • 举报
回复
打印了一下,arg2和arg3的值貌似一样的
tangcheng_ok 2010-11-23
  • 打赏
  • 举报
回复
public abstract void onItemSelected (AdapterView<?> parent, View view, int position, long id) 

Since: API Level 1 Callback method to be invoked when an item in this view has been selected. Impelmenters can call getItemAtPosition(position) if they need to access the data associated with the selected item.

Parameters
parent The AdapterView where the selection happened
view The view within the AdapterView that was clicked
position The position of the view in the adapter
id The row id of the item that is selected
ameyume 2010-11-23
  • 打赏
  • 举报
回复
BaseColumns
String _ID The unique ID for a row.

The row id of the item that is selected
应该是说的同一个ID吧。
ameyume 2010-11-23
  • 打赏
  • 举报
回复
帮顶,一直没使用过arg3
youngwolf 2010-11-23
  • 打赏
  • 举报
回复
另外想问一下,如果不使用arg3,我如何得到BaseColumns._ID的值呢?
youngwolf 2010-11-23
  • 打赏
  • 举报
回复
回楼上,我对Sql语句做了排序,做了条件判断,无论怎样,arg3的值都等于数据库中BaseColumns._ID的值。
大掌教 2010-11-23
  • 打赏
  • 举报
回复
是pisition,就是第几个item吧。arg0是选的item,是个view对象。arg1是item的id号,从0开始,跟数组的id号类似。arg3就是item的位置。不知道准不准确。arg3一直没怎么用。你可以log输出看看,我觉得你之所以输出的是BaseColumns._ID的值,是因为arg3是从1开始的,你如果查的全表,那么他们的值就是相等的。你可以
log.e(TAG,"arg3 is"+(arg3+1));
log.e(TAG,"BaseColumns._ID is"+BaseColumns._ID);
看看是不是有区别
youngwolf 2010-11-23
  • 打赏
  • 举报
回复
回二三楼,我觉得不一样,比如我把
final String[] ContactsFliter = {Contacts.DISPLAY_NAME, BaseColumns._ID};
改为
final String[] ContactsFliter = {Contacts.DISPLAY_NAME, Contacts.HAS_PHONE_NUMBER};
你觉得会怎样呢?
轮播头像、图片的控件,当前图片有放大、凸前效果。其实,你可以轮播任何view,也可作为tab或viewPager的指示器使用。问题:多次调用AutoScroll()自动播放时,播放速度回成倍增加,这个因为作者没有判断当前是否正在播放。我的demo中对这个问题进行了处理。项目地址:https://github.com/zhaoxin1943/CarouselLib 效果图:如何使用创建轮播控件HorizontalListViewView         android:id="@ id/hList"         android:layout_width="match_parent"         android:layout_marginTop="20dp"         android:layout_height="wrap_content">         View>HorizontalListView hList = (HorizontalListView) findViewById(R.id.hList);2. 添加AdapterhList.setAdapter(adapter);在Adapter中创建图片或item布局3.添加监听hList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {//监听图片或Item被选中             @Override             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {             }             @Override             public void onNothingSelected(AdapterView<?> parent) {             } }); hList.setOnItemClickListener(new AdapterView.OnItemClickListener() {//监听图片或Item被点击             @Override             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                 hList.setSelection(position);             } }); hList.setScrollCallBack(new HorizontalListView.ItemScrollCallBack() {//滚动监听             @Override             public void onScrollStop(int position) {//position为当前滚动到的Item                             } });设置自动轮播hList.AutoScroll();停止自动轮播hList.StopScroll();
package cc.lifelink.cn; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; public class City_cnActivity extends Activity { private DBManager dbm; private SQLiteDatabase db; private Spinner provinceSpinner; private Spinner citySpinner=null; private Spinner districtSpinner=null; private String province=null; private String city=null; private String district=null; /*------------------*/ // private TextView provinceView; // private TextView cityView; // private TextView districtView; // private ImageView provinceImageView; // private ImageView cityImageView; // private ImageView districtImageView; // // private PopupWindow mPopupWindow; // private ListView provinceListView /*------------------*/ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); provinceSpinner=(Spinner)findViewById(R.id.spinner1); citySpinner=(Spinner)findViewById(R.id.spinner2); districtSpinner=(Spinner)findViewById(R.id.spinner3); provinceSpinner.setPrompt("鐪?鐩磋緰甯?); citySpinner.setPrompt("鍩庡競"); districtSpinner.setPrompt("鍦板尯"); provinceSpinner.setOnItemSelectedListener(new ProvinceOnSelectedListener()); districtSpinner.setOnItemSelectedListener(new DistrictOnSelectedListener()); citySpinner.setOnItemSelectedListener(new CityOnSelectedListener()); dbm = new DBManager(this); provinceSpinner(); // initUI(); } // private void initUI(){ // provinceView = (TextView) findViewById(R.id.tv_province); // cityView = (TextView) findViewById(R.id.tv_city); // districtView = (TextView) findViewById(R.id.tv_district); // provinceImageView = (ImageView) findViewById(R.id.iv_province); // cityImageView = (ImageView) findViewById(R.id.iv_city); // districtImageView = (ImageView) findViewById(R.id.iv_district); // // LayoutInflater inflater = LayoutInflater.from(this); // LinearLayout prvinceLayout = (LinearLayout) View.inflate(this, R.layout.popup_province, null); // provinceListView = (ListView) prvinceLayout.findViewById(R.id.lv_province); // mPopupWindow = new PopupWindow(prvinceLayout, 150, 280); // mPopupWindow.setBackgroundDrawable(new BitmapDrawable()); // mPopupWindow.setFocusable(true); // mPopupWindow.setOutsideTouchable(true); // mPopupWindow.update(); // } // // private class ImageViewClickListener implements OnClickListener{ // // // @Override // public void onClick(View v) { // switch (v.getId()) { // case R.id.iv_province: // mPopupWindow.showAtLocation(mLinearLayout, Gravity.LEFT // | Gravity.TOP, arrayOfInt[0]+10, arrayOfInt[1]+41); // break; // case R.id.iv_city: // // break; // case R.id.iv_district: // // break; // // default: // break; // } // } // // } public void provinceSpinner(){ dbm.openDatabase(); db = dbm.getDatabase(); Cursor cursor=null; ListItem> provinces = new ArrayListItem>(); try { String sql = "select * from province"; cursor = db.rawQuery(sql,null); while (cursor.moveToNext()){ String code=cursor.getString(cursor.getColumnIndex("code")); int id = cursor.getInt(cursor.getColumnIndex("id")); Log.i("tag", "id: "+id+"code: "+code); byte bytes[]=cursor.getBlob(2); String name=new String(bytes,"gbk"); CommonItem myListItem=new CommonItem(); myListItem.setName(name); myListItem.setPcode(code); provinces.add(myListItem); } Log.i("tag", "provinces size: "+provinces.size()); } catch (Exception e) { e.printStackTrace(); } finally{ dbm.closeDatabase(); db.close(); if (cursor!=null) { cursor.close(); } } CommonAdapter provinceAdapter = new CommonAdapter(this,provinces); provinceSpinner.setAdapter(provinceAdapter); } public void citySpinner(String pcode){ Cursor cursor = null; ListItem> citys = new ArrayListItem>(); try { dbm.openDatabase(); db = dbm.getDatabase(); String sql = "select * from city where pcode='"+pcode+"'"; cursor = db.rawQuery(sql,null); while (cursor.moveToNext()){ String code=cursor.getString(cursor.getColumnIndex("code")); byte bytes[]=cursor.getBlob(2); String name=new String(bytes,"gbk"); CommonItem myListItem=new CommonItem(); myListItem.setName(name); myListItem.setPcode(code); citys.add(myListItem); } Log.i("tag", "citys size: "+citys.size()); } catch (Exception e) { e.printStackTrace(); } finally{ dbm.closeDatabase(); db.close(); if (cursor!=null) { cursor.close(); } } CommonAdapter cityAdapter = new CommonAdapter(this,citys); citySpinner.setAdapter(cityAdapter); } public void districtSpinner(String pcode){ Cursor cursor=null; ListItem> districts = new ArrayListItem>(); try { dbm.openDatabase(); db = dbm.getDatabase(); String sql = "select * from district where pcode='"+pcode+"'"; cursor = db.rawQuery(sql,null); while (cursor.moveToNext()){ String code=cursor.getString(cursor.getColumnIndex("code")); byte bytes[]=cursor.getBlob(2); String name=new String(bytes,"gbk"); CommonItem myListItem=new CommonItem(); myListItem.setName(name); myListItem.setPcode(code); districts.add(myListItem); } Log.i("tag", "districts size: "+districts.size()); } catch (Exception e) { e.printStackTrace(); } finally{ dbm.closeDatabase(); db.close(); if (cursor!=null) { cursor.close(); } } CommonAdapter districtAdapter = new CommonAdapter(this,districts); districtSpinner.setAdapter(districtAdapter); } class ProvinceOnSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView adapterView, View view, int position, long id) { province=((CommonItem) adapterView.getItemAtPosition(position)).getName(); String pcode =((CommonItem) adapterView.getItemAtPosition(position)).getPcode(); citySpinner(pcode); districtSpinner(pcode); } public void onNothingSelected(AdapterView adapterView) { } } class CityOnSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView adapterView, View view, int position, long id) { city=((CommonItem) adapterView.getItemAtPosition(position)).getName(); String pcode =((CommonItem) adapterView.getItemAtPosition(position)).getPcode(); districtSpinner(pcode); } public void onNothingSelected(AdapterView adapterView) { } } class DistrictOnSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView adapterView, View view, int position, long id) { district=((CommonItem) adapterView.getItemAtPosition(position)).getName(); Toast.makeText(City_cnActivity.this, province+" "+city+" "+district, Toast.LENGTH_LONG).show(); } public void onNothingSelected(AdapterView adapterView) { } } @Override protected void onDestroy() { dbm=null; super.onDestroy(); } }
android 图片 拍照 删除 添加 旋转 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.image_show); path = Environment.getExternalStorageDirectory(); file = new File(path + "/MapGIS/myImg/"); file.mkdirs(); getSD(); mSwitcher = (ImageSwitcher) findViewById(R.id.switcher); gallery = (Gallery) findViewById(R.id.gallery); mSwitcher.setFactory(this); mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out)); gallery.setAdapter(new ImageAdapter(this)); gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) { mSwitcher.setImageURI(imgList1.get(position).getUri()); pos = position; } public void onNothingSelected(AdapterView<?> arg0) { } }); // 拍照按钮 Button paizhao = (Button) this.findViewById(R.id.paizhao); paizhao.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 判断SD卡是不是能用 if (isAvaiableSpace(600)) { // 当前可用 Intent imgIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); nameTmp = dateFormat.format(date); imgIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(file, nameTmp + ".jpg"))); startActivityForResult(imgIntent, 1); } else // 当前不可用 { Toast.makeText(PhotoShowActivity.this, "SD卡不可用!", Toast.LENGTH_SHORT).show(); } } }); // 删除按钮 Button shanchu = (Button) this.findViewById(R.id.shanchu); shanchu.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if (!imgList1.isEmpty()) { // 存放图片名字 final String fname = imgList1.get(pos).getName(); new AlertDialog.Builder(PhotoShowActivity.this).setIcon(R.drawable.alert_dialog_icon) .setTitle("警告").setMessage("确认删除此图片?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub File SDPATH2 = Environment.getExternalStorageDirectory(); File file2 = new File(SDPATH2 + "/MapGIS/myImg/" + fname); file2.delete(); imgList1.remove(pos); gallery.setAdapter(new ImageAdapter(PhotoShowActivity.this)); mSwitcher.reset(); Toast.makeText(PhotoShowActivity.this, "图片已成功删除!", Toast.LENGTH_SHORT).show(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(PhotoShowActivity.this, "你取消了删除图片!", Toast.LENGTH_SHORT).show(); } }).show(); } else { Toast.makeText(PhotoShowActivity.this, "当前没有图片可以删除", Toast.LENGTH_SHORT).show(); } } }); // 向左旋转图片按钮 xuanzhuan2 = (Button) this.findViewById(R.id.xuanzhuan2); xuanzhuan2.setOnClickListener(new MyXuanZhuanClick(270)); // 向右旋转图片按钮 xuanzhuan = (Button) this.findViewById(R.id.xuanzhuan); xuanzhuan.setOnClickListener(new MyXuanZhuanClick(90)); }

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧