2012-06-13 3 views
2

원격 mysql DB에서 데이터를받는 안드로이드 클라이언트 앱에 대한 동적 목록 뷰가 있습니다. 사용자가 임의의 행을 클릭하면 열리는 컨텍스트 메뉴가 있습니다. 해당 메뉴에서 '장바구니에 추가'라는 옵션이 있습니다. 해당 상황에 맞는 메뉴 옵션을 선택하면 카트에 클릭 된 행 항목을 추가하고 싶습니다. 그렇다면 쇼핑 카트처럼 카트에 선택/클릭 된 행 항목을 추가하기위한 행 ID를 얻으려면 어떻게해야합니까? 나중에 'Show Cart'클래스에서 선택된 행 항목을 표시해야합니다 .Pls help..thanks in advance. 나는 실제 코드 누군 목록보기 표시 클래스에 대해 논의 많은 기사를 찾을 didnt는 여기에 있습니다 :동적 목록보기의 행 ID를 얻으려면 안드로이드에 추가하십시오.

public class MainMenu extends ListActivity { 
Intent intent = getIntent(); 
InputStream is; 
@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String result = ""; 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://10.0.2.2/phpmyadmin/php.php"); 
      HttpResponse response = null; 
    try { 
     response = httpclient.execute(httppost); 
    } catch (ClientProtocolException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    HttpEntity entity = response.getEntity(); 
    try { 
     is = entity.getContent(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
    Log.e("log_tag", "connection success "); 

    BufferedReader reader = null; 
    try { 
     reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 

     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    try { 
     is.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    result=sb.toString(); 


    JSONArray jArray = null; 
    try { 
     jArray = new JSONArray(result); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    int arrayLength=jArray.length(); 
    String F_NAME[]=new String[arrayLength]; 

    for(int i=0;i<arrayLength;i++){ 
      JSONObject json_data = null; 
     try { 
      json_data = jArray.getJSONObject(i); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
      try { 
      F_NAME[i]=json_data.getString("F_NAME"); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }} 
setListAdapter(new ArrayAdapter<String>(this, R.layout.list,F_NAME)); 
ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); registerForContextMenu(lv);} 

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.fltmenu, menu); menu.setHeaderTitle("Ask for");} 
public boolean onContextItemSelected(MenuItem item) { //find out which menu item was pressed switch (item.getItemId()) { 
     case R.id.ToCart: 
      Dotocart(); 
      return true; 
      default: 
      return false;}}private void Dotocart() {} 

답변

1
@Override 
    public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
      int menuItemIndex = item.getItemId(); 
      int position = (info.position); 
.... 

MenuItem과 지수가 컨텍스트 메뉴 선택 항목 (차트에 추가 ...)과를 반환 info.position 클릭 된리스트의 위치. (목록보기를 채운 데이터 목록이있는 경우 동일한 색인으로 가져올 수 있습니다.

+0

감사합니다. @Nuno Goncalves. 사용자가 추가하려는 모든 목록 항목을 선택하여 장바구니에 저장해야합니다. 각 행에 해당하는 상황에 맞는 메뉴에서 '장바구니에 추가'옵션을 선택합니다. 사용자가 장바구니에 추가 한 항목을 저장하고 동일한 사용자가 컨텍스트 메뉴에서 장바구니 옵션을 클릭 할 때 나중에 표시하는 방법은 무엇입니까? –

+0

@ ess.crazy, 내 대답이 귀하의 질문에 대답했다면, 그것을 받아 들일 수있는 것으로 표시하십시오. 다음 목표를 위해 데이터베이스에 선택한 항목을 저장해야합니다. 나중에 상황에 맞는 메뉴를 클릭하면 해당 항목을 볼 수 있습니다. 새로운 활동을 시작하고 해당 항목의 전체 정보를 볼 수 있습니다. 장바구니의 모든 항목을 보려면 데이터 바에 저장된 모든 항목을 볼 수있는 새로운 활동을 만들 수 있습니다 se. –

+0

@Nuno .. 감사합니다. 나는 ... –

관련 문제