2013-03-04 86 views
1

我有药的列表,当用户单击该药物之一,它会去下一个这表明药物的细节活动..OnItemClickListener查看该列表的详细信息

下面的代码是与活动药品名单..我知道我必须onclicklistener使用..但我不知道怎么写

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 

那么这里就是我的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 

我不知道该怎么做,任何人PLZ帮助

回答

1

你应该让你的类实现onItemClickListener

implements AdapterView.OnItemClickListener

onCreate添加以下行:

listContent.setOnItemClickListener(this); 

然后覆盖:

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; 
} 
+0

我可以去其他活动,但我要如何通过ID太@覆盖 \t公共无效onItemClick(适配器视图父母, View v,int position,long id){ \t \t // TODO自动生成方法存根 \t \t意图i =新意图(v.getContext(),Medic ineDetail.class); startActivity(i); \t \t \t} – new 2013-03-04 17:14:35

+0

我已经检查,它传递的位置,但我多么想找回在另一个活动位置 – new 2013-03-04 17:28:30

+0

你可以传递的意图的位置。正如你所看到的,我在这种情况下使用函数createIntentWithExtra创建了一个intent并传递了位置和视图,我添加了这个函数以便你可以使用它,查看更新后的答案。 – 2013-03-04 18:40:37

1

使用onItemSelectedListener:arg0都将是ListView和ARG2将在适配器中的项目位置

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){ 
}