2014-07-10 3 views
0

다음 코드는 sql 데이터베이스의 항목을 표시하고 필요한 작업을 수행합니다. 예를 들어, 통화를 클릭하면 직원의 번호로 전화가 걸립니다. Availibility 텍스트를 클릭하면 아무 것도 나타나지 않습니다. 그걸 위해 내가 무엇을 사용해야합니까? 대신 "EmployeeAction.ACTION_CALL"의텍스트를 클릭해도 아무 것도 발생하지 않습니다.

if (cursor.getCount() == 1) 
    { 
     cursor.moveToFirst(); 

     employeeNameText = (TextView) findViewById(R.id.employeeName); 
     employeeNameText.setText(cursor.getString(cursor.getColumnIndex("firstName")) + " " + cursor.getString(cursor.getColumnIndex("lastName"))); 

     titleText = (TextView) findViewById(R.id.title); 
     titleText.setText(cursor.getString(cursor.getColumnIndex("title"))); 




     actions = new ArrayList<EmployeeAction>(); 



     String officePhone = cursor.getString(cursor.getColumnIndex("officePhone")); 
     if (officePhone != null) { 
      actions.add(new EmployeeAction("Call office", officePhone, EmployeeAction.ACTION_CALL)); 
     } 

     String cellPhone = cursor.getString(cursor.getColumnIndex("cellPhone")); 
     if (cellPhone != null) { 
      actions.add(new EmployeeAction("Call mobile", cellPhone, EmployeeAction.ACTION_CALL)); 
      actions.add(new EmployeeAction("SMS", cellPhone, EmployeeAction.ACTION_SMS)); 
     } 

     String email = cursor.getString(cursor.getColumnIndex("email")); 
     if (email != null) { 
      actions.add(new EmployeeAction("Email", email, EmployeeAction.ACTION_EMAIL)); 
     } 

     String available = cursor.getString(cursor.getColumnIndex("availability")); 
     if (available != null) { 
      actions.add(new EmployeeAction("Availability", available, EmployeeAction.ACTION_CALL)); 
     } 

     managerId = cursor.getInt(cursor.getColumnIndex("managerId")); 
     if (managerId>0) { 
      actions.add(new EmployeeAction("View manager", cursor.getString(cursor.getColumnIndex("managerFirstName")) + " " + cursor.getString(cursor.getColumnIndex("managerLastName")), EmployeeAction.ACTION_VIEW)); 
     } 

     cursor = db.rawQuery("SELECT count(*) FROM employee WHERE managerId = ?", 
       new String[]{""+employeeId}); 
     cursor.moveToFirst(); 
     int count = cursor.getInt(0); 
     if (count>0) { 
      actions.add(new EmployeeAction("View direct reports", "(" + count + ")", EmployeeAction.ACTION_REPORTS)); 
     } 

     adapter = new EmployeeActionAdapter(); 
     setListAdapter(adapter); 
    } 

} 

public void onListItemClick(ListView parent, View view, int position, long id) { 

    EmployeeAction action = actions.get(position); 

    Intent intent; 
    switch (action.getType()) { 

     case EmployeeAction.ACTION_CALL: 
      Uri callUri = Uri.parse("tel:" + action.getData()); 
      intent = new Intent(Intent.ACTION_CALL, callUri); 
      startActivity(intent); 
      break; 

     case EmployeeAction.ACTION_EMAIL: 
      intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("plain/text"); 
      intent.putExtra(Intent.EXTRA_EMAIL, new String[]{action.getData()}); 
      startActivity(intent); 
      break; 

     case EmployeeAction.ACTION_SMS: 
      Uri smsUri = Uri.parse("sms:" + action.getData()); 
      intent = new Intent(Intent.ACTION_VIEW, smsUri); 
      startActivity(intent); 
      break; 

     case EmployeeAction.ACTION_REPORTS: 
      intent = new Intent(this, DirectReports.class); 
      intent.putExtra("EMPLOYEE_ID", employeeId); 
      startActivity(intent); 
      break; 

     case EmployeeAction.ACTION_VIEW: 
      intent = new Intent(this, EmployeeDetails.class); 
      intent.putExtra("EMPLOYEE_ID", managerId); 
      startActivity(intent); 
      break; 
    } 
}  

class EmployeeActionAdapter extends ArrayAdapter<EmployeeAction> { 

    EmployeeActionAdapter() { 
     super(EmployeeDetails.this, R.layout.action_list_item, actions); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     EmployeeAction action = actions.get(position); 
     LayoutInflater inflater = getLayoutInflater(); 
     View view = inflater.inflate(R.layout.action_list_item, parent, false); 
     TextView label = (TextView) view.findViewById(R.id.label); 
     label.setText(action.getLabel()); 
     TextView data = (TextView) view.findViewById(R.id.data); 
     data.setText(action.getData()); 
     return view; 
    } 

} 

} 
+0

아무 일도 일어나지 않으려면 ACTION_CALL 값을 지정하는 이유는 무엇입니까? 이 스위치를 switch 절 안에 있지 않은 옵션으로 바꾸려고 했습니까? –

+0

이렇게하면 다른 코드를 수정해야하므로 swicth 절 외부에 보관할 수 없습니다. 나는 안드로이드를 처음 접한다. 다른 방법을 제안하십시오. 감사! – user2473631

+0

이 줄의 주석 처리 : actions.add (새 EmployeeAction ("Availability", available, EmployeeAction.ACTION_CALL))); –

답변

1

장소 -1 (타입이 INT에있는 경우), 또는 ""(타입 문자열 인 경우).

관련 문제