new
new

Reputation: 77

OnItemClickListener to view details of the list

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

Answers (2)

Emil Adz
Emil Adz

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

JRowan
JRowan

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

Related Questions