您的位置:首页 > 移动开发 > Android开发

Android学习记录--ListView取id的疑问

2015-06-14 17:53 471 查看
今天修改了一个Listview程序,发现一个奇怪的问题

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: