Android学习记录--ListView取id的疑问
2015-06-14 17:53
471 查看
今天修改了一个Listview程序,发现一个奇怪的问题
listview对数据库中的数据进行展示,listview获取每行的id竟然就是数据库中该行数据的_ID,
这个不知道是什么时候关联上去了
留个疑问
listview对数据库中的数据进行展示,listview获取每行的id竟然就是数据库中该行数据的_ID,
这个不知道是什么时候关联上去了
留个疑问
package com.dannyAndroid.stuinfo; import com.dannyAndroid.stuinfo.StudentInfo.StuInfoColumns; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class StudentInfoEdit extends Activity { private static final String TAG = "StudentInfo"; public static final String EDIT_ACTION = "com.dannyAndroid.studentInfoEdit.action.EDIT"; public static final String INSERT_ACTION = "com.dannyAndroid.studentInfoEdit.action.INSERT"; private static final int STATE_EDIT = 0; private static final int STATE_INSERT = 1; private EditText mWordName; private EditText mWordMeaning; private EditText mWordNotes; private Button confirmBtn; private Button cancleBtn; private int mState; private Uri mUri; private Cursor mCursor; private static final String[] PROJECTION = new String[] { StudentInfo.StuInfoColumns._ID, StudentInfo.StuInfoColumns.WORD_NAME, StudentInfo.StuInfoColumns.WORD_MEANING, StudentInfo.StuInfoColumns.WORD_NOTES }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit); final Intent intent = getIntent(); final String action = intent.getAction(); mWordName = (EditText) findViewById(R.id.nameVal); mWordMeaning = (EditText) findViewById(R.id.numberVal); mWordNotes = (EditText) findViewById(R.id.scoreVal); confirmBtn = (Button) findViewById(R.id.ok); cancleBtn = (Button) findViewById(R.id.cancel); if (EDIT_ACTION.equals(action)) { mState = STATE_EDIT; mUri = intent.getData(); String mId = mUri.getPathSegments().get(1); Cursor mCursor = getContentResolver().query(mUri, null, "_id=?", new String[]{mId + ""}, null); //mCursor = managedQuery(mUri, PROJECTION, null, null, null); mCursor.moveToFirst(); String name = mCursor.getString(1); mWordName.setText(name); String number = mCursor.getString(2); mWordMeaning.setText(number); String score = mCursor.getString(3); mWordNotes.setText((score)); } else if (INSERT_ACTION.equals(action)) { mState = STATE_INSERT; } else { Log.e(TAG, "no such action error"); finish(); return; } confirmBtn.setOnClickListener(new OnClickListener() { //@Override public void onClick(View v) { if (mState == STATE_INSERT) { insertStuInfo(); } else { updateStuInfo(); } Intent mIntent = new Intent(); setResult(RESULT_OK, mIntent); finish(); } }); cancleBtn.setOnClickListener(new OnClickListener() { //@Override public void onClick(View v) { Intent i = new Intent(); setResult(RESULT_OK, i); finish(); } }); } private void insertStuInfo() { String name = mWordName.getText().toString(); String number = mWordMeaning.getText().toString(); String score = mWordNotes.getText().toString(); ContentValues values = new ContentValues(); values.put(StuInfoColumns.WORD_NAME, name); values.put(StuInfoColumns.WORD_MEANING, number); values.put(StuInfoColumns.WORD_NOTES, score); getContentResolver().insert(StuInfoColumns.CONTENT_URI, values); } private void updateStuInfo() { String name = mWordName.getText().toString(); String number = mWordMeaning.getText().toString(); String score = mWordNotes.getText().toString(); ContentValues values = new ContentValues(); values.put(StuInfoColumns.WORD_NAME, name); values.put(StuInfoColumns.WORD_MEANING, number); values.put(StuInfoColumns.WORD_NOTES, score); getContentResolver().update(mUri, values, null, null); } }
package com.dannyAndroid.stuinfo; import com.dannyAndroid.stuinfo.StudentInfo.StuInfoColumns; import android.app.ListActivity; import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.AdapterView.AdapterContextMenuInfo; public class StuInfoActivity extends ListActivity { private static final int INSERT_ID = Menu.FIRST; private static final int DELETE_ID = Menu.FIRST + 1; private static final int CODE_ADD = 0; private static final int CODE_EDIT = 1; //private StuInfoContentProvider mStuInfo; private Cursor mStuInfoCursor; private static final String[] PROJECTION = new String[] { StudentInfo.StuInfoColumns._ID, StudentInfo.StuInfoColumns.WORD_NAME, StudentInfo.StuInfoColumns.WORD_MEANING, StudentInfo.StuInfoColumns.WORD_NOTES }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); if (intent.getData() == null) { intent.setData(StudentInfo.StuInfoColumns.CONTENT_URI); } registerForContextMenu(getListView()); displayStudentList(); } // 显示学生信息的ListView private void displayStudentList() { //ABOVE CODE //intent.setData(StudentInfo.StuInfoColumns.CONTENT_URI); mStuInfoCursor = managedQuery(getIntent().getData(), PROJECTION, null, null, StudentInfo.StuInfoColumns.DEFAULT_SORT_ORDER); String[] from = new String[] {StuInfoColumns.WORD_NAME, StuInfoColumns.WORD_MEANING, StuInfoColumns.WORD_NOTES};//WORD_NOTES int[] to = new int[] {R.id.name, R.id.number, R.id.score}; SimpleCursorAdapter stuInfo = new SimpleCursorAdapter(this, R.layout.student, mStuInfoCursor, from, to); setListAdapter(stuInfo); } // 创建选项菜单 public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, INSERT_ID, 0, "添加一条单词信息"); // menu.add(0, DELETE_ID, 0, "删除一条单词信息"); return true; } // 选项菜单的菜单动作 public boolean onMenuItemSelected(int featureId, MenuItem item) { switch(item.getItemId()) { case INSERT_ID: addStudentInfo(); return true; case DELETE_ID: deleteStudentInfo(getListView().getSelectedItemId()); displayStudentList(); return true; } return super.onMenuItemSelected(featureId, item); } // 点击List将编辑对象项的学生信息 protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); editStudentInfo(position, id); } // 上下文菜单的动作 @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo)item.getMenuInfo(); int position = menuInfo.position; long id = menuInfo.id; Log.d("test614", "**********menuInfo.id id="+id); switch(item.getItemId()) { case Menu.FIRST + 2: editStudentInfo(position, id); return true; case Menu.FIRST + 3: deleteStudentInfo(id); displayStudentList(); return true; } return super.onContextItemSelected(item); } //long Press the text // 创建上下文菜单 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("操作"); menu.add(0, Menu.FIRST + 2, 0, "编辑"); menu.add(0, Menu.FIRST + 3, 0, "删除"); super.onCreateContextMenu(menu, v, menuInfo); } // 添加一条学生信息记录 private void addStudentInfo() { Intent intent0 = new Intent(this, StudentInfoEdit.class); intent0.setAction(StudentInfoEdit.INSERT_ACTION); intent0.setData(getIntent().getData()); startActivityForResult(intent0, CODE_ADD); } private void deleteStudentInfo(long id) { Log.d("test614", "**********deleteStudentInfo id="+id); System.out.println("**********deleteStudentInfo id="+id); Uri uri = ContentUris.withAppendedId(getIntent().getData(),id); getContentResolver().delete(uri, null, null); } // 编辑学生信息 private void editStudentInfo(int position, long id) { System.out.println("**********editStudentInfo id="+id); Intent intent = new Intent(this, StudentInfoEdit.class); intent.setData(ContentUris.withAppendedId(getIntent().getData(),id)); //intent.setData(getIntent().getData()); intent.setAction(StudentInfoEdit.EDIT_ACTION); startActivityForResult(intent, CODE_EDIT); } protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); displayStudentList(); } }
相关文章推荐
- Android 4.0+ 系统中SystemBars的适配问题
- (转) Android开发性能优化简介
- android adb 读写模式 挂载文件系统
- Android中项目中各个文件夹的含义和用途详解
- Android---56---Android应用调用Web Service/号码归属地查询
- android笔记之ViewFlipper的使用
- Ubuntu环境:Android开发平台搭建
- Android开发之初识Camera图像采集
- Android开发之SurfaceView
- 联想ThinkCenter M4350t型号主机怎样开启Intel Virtualization Technology功能
- android开发论坛
- android开发论坛
- 菜鸟学Android笔记(三十一):Response实现验证码
- Android中 多线程下载原理
- 安卓android jni创建线程后无法findclass
- Android 获取View的高度和宽度
- Android.mk的用法和基础学习-----阿冬专栏
- Android Color的定义以及color.xml的使用
- 基于android的远程视频监控系统
- Android中SoundPool的使用