Reputation: 77
i have a list of medicine, when user click one of the medicine, it will go to next activity which show the details of the medicine..
below code is the activity with list of medicine.. i know i have to use onclicklistener.. but i dont know how to write
public class MedicineView extends Activity
{
private SQLiteDatabase database;
private ArrayList<String> result = new ArrayList<String>();
private ArrayList<Long> idList = new ArrayList<Long>();
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.medicine_view);
ListView listContent = (ListView)findViewById(R.id.listView1);
DBHelper helper = new DBHelper(this);
database = helper.getWritableDatabase();
// view data
try{
String query = "select * from " + DBHelper.TABLE_MEDICINE;
Cursor c = database.rawQuery(query, null);
if(c!=null)
{
c.moveToFirst();
int getIndex = c.getColumnIndex(DBHelper.MED_ID);
int getNameIndex = c.getColumnIndex(DBHelper.MED_NAME);
int getDosageIndex = c.getColumnIndex(DBHelper.DOSAGE);
int getFrequencyIndex = c.getColumnIndex(DBHelper.FREQUENCY);
if(c.isFirst())
{
do{
idList.add(c.getLong(getIndex));
result.add(c.getString(getNameIndex)+" | " + c.getString(getDosageIndex)
+" | " + c.getString(getFrequencyIndex)+"\n" );
}while(c.moveToNext());
}
}
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,result);
listContent.setAdapter(adapter);
listContent.setTextFilterEnabled(true);
c.close();
}
catch(SQLException e){
}
listContent.setOnItemClickListener(this);
}
public void onClickHome(View v){
startActivity (new Intent(getApplicationContext(), MenuUtama.class));
}
public void onClickAdd(View v){
startActivity (new Intent(getApplicationContext(), MedicineAdd.class));
}
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent myIntent = new Intent(v.getContext(), MedicineDetail.class);
myIntent.putExtra("position", position);
startActivityForResult(myIntent, 0);
}
} // end class
then here is my detailsactivity
public class MedicineDetail extends Activity
{
private SQLiteDatabase database;
private ArrayList<Long> idList = new ArrayList<Long>();
ArrayList<String> list = new ArrayList<String>();
Button btnEdit;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.medicine_detail);
int id = getIntent().getIntExtra("id", 2); //i don't know how to do here
btnEdit = (Button)findViewById(R.id.imageButton2);
DBHelper helper = new DBHelper(this);
database = helper.getWritableDatabase();
String sql = "select * from " + DBHelper.TABLE_MEDICINE + " WHERE id = " + id;
Cursor cursor = database.rawQuery(sql, null);
try{
if( cursor != null ){
if (cursor.moveToFirst()) {
do {
idList.add(cursor.getLong(0));
list.add(cursor.getString(1));
list.add(cursor.getString(2));
list.add(cursor.getString(3));
list.add(cursor.getString(4));
list.add(cursor.getString(5));
list.add(cursor.getString(6));
} while (cursor.moveToNext());
}
}
}
catch(SQLException e){
}
cursor.moveToFirst();
TextView StartDate = (TextView) findViewById(R.id.textView8);
TextView EndDate = (TextView)findViewById(R.id.textView9);
TextView MedName = (TextView)findViewById(R.id.textView10);
TextView Dosage = (TextView)findViewById(R.id.textView11);
TextView Frequency = (TextView)findViewById(R.id.textView12);
TextView Instruction = (TextView)findViewById(R.id.textView13);
StartDate.setText(cursor.getString(1));
EndDate.setText(cursor.getString(2));
MedName.setText(cursor.getString(3));
Dosage.setText(cursor.getString(4));
Frequency.setText(cursor.getString(5));
Instruction.setText(cursor.getString(6));
cursor.close();
}
public void onClickHome(View v){
startActivity (new Intent(getApplicationContext(), MedicineView.class));
}
} // end class
i dont know what how to do, anyone plz help
Upvotes: 1
Views: 1124
Reputation: 41099
You should let you class implement the onItemClickListener
implements AdapterView.OnItemClickListener
and in onCreate
add the following line:
listContent.setOnItemClickListener(this);
and then overwrite:
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Intent intent = createIntentwithExtra(v, position);
startActivity(intent);
}
UPDATE:
public Intent createIntentwithExtra(View v, int position)
{
Intent intent = new Intent(getApplicationContext(), TaskDetailsActivity.class);
intent.putExtra(KEY_USERNAME, username);
intent.putExtra(KEY_ID, tasksRepository.get(position).getId());
return intent;
}
Upvotes: 1
Reputation: 7104
use onItemSelectedListener: arg0 would be the listview and arg2 would be the item position in the adapter
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
}
Upvotes: 1