How to get value from database on list item click according to position of list item
I can add to a db and list as a listview. When I click a list item using onListItemClick, what statement do I need to get the value?
package cabs.h;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import android.widget.AdapterView.AdapterContextMenuInfo;
public class planner extends ListActivity {
private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
private NotesDbAdapter mDbHelper;
private Long mRowId;
private ServerResponce AllList;
// private DeviceListAdapter AllList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.listonruntime);
mDbHelper = new NotesDbAdapter(this);
mDbHelper.open();
fillData();
registerForContextMenu(getListView());
String responce = null ;
// startManagingCursor(responce);
//AllList = new ServerResponce(responce);
}
private void fillData() {
Cursor notesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(notesCursor);
// Create an array to specify the fields we want to display in the list (only TITLE)
String[] from = new String[]{NotesDbAdapter.KEY_BODY,NotesDbAdapter.KEY_TITLE,NotesDbAdapter.KEY_NUMBER};
int[] to = new int[]{R.id.toptext,R.id.middletext,R.id.circle};
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.row, notesCursor, from, to);
setListAdapter(notes);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, DELETE_ID, 0, R.string.menu_delete);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case DELETE_ID:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
mDbHelper.deleteNote(info.id);
fillData();
return true;
}
return super.onContextItemSelected(item);
}
@Override
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
saveState();
outState.putSerializable(NotesDbAdapter.KEY_ROWID, mRowId);
}
@Override
protected void onPause() {
super.onPause();
saveState();
}
@Override
protected void onResume() {
super.onResume();
}
// ServerResponce servresp=new ServerResponce();
String responceId = Activity1.getData();
String responceno = Activity2.getData();
String city = cabbookingapplication.Selection;
String area = cabbookingapplication.Selection2;
String exactadd = cabbookingapplication.Selection3;
String nearby = cabbookingapplication.Selection4;
private void saveState() {
String title =("FROM LOC::"+city+","+area+","+exactadd+","+nearby);
String body = ("TO LOC::"+city+","+area+","+exactadd+","+nearby);
String number = (""+responceno+",,"+responceId);
if (mRowId == null) {
long id = mDbHelper.createNote(title, body, number);
if (id > 0) {
mRowId = id;
}
} else {
mDbHelper.updateNote(mRowId, title, body,number);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long thisID)
{
super.onListItemClick(l, v, position, thisID);
String resposponseid = Activity2.getData();
Object o = this.getListAdapter().getItemId(position);
// String device_name = (String) (planner.this). getListAdapter().getItem(position);
Toast.makeText(this, "this row responceid is= " + " " + keyword, Toast.LENGTH_LONG).show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
开发者_高级运维 fillData();
}
}
and on list item click i want retrive value of saved in list item according to row position what to do
@Override
**protected void onListItemClick(ListView l, View v, int position, long thisID)
{
super.onListItemClick(l, v, position, thisID);
String resposponseid = Activity2.getData();
Object o = this.getListAdapter().getItemId(position);
Toast.makeText(this, "this row responceid is= " + " " + keyword, Toast.LENGTH_LONG).show();
}**
If you check the documentation for the method onListItemClick() you can see that the last parameter is the row id of the clicked item.
This method will be called when an item in the list is selected. Subclasses should override. Subclasses can call getListView().getItemAtPosition(position) if they need to access the data associated with the selected item.
Parameters
l: The ListView where the click happened
v: The view that was clicked within the ListView
position: The position of the view in the list
id: The row id of the item that was clicked
But to get a proper row id it is important that the cursor which was passed to the adapter contains a row called '_id' representing unique id for each row in the table.
精彩评论