2014-02-25 52 views
0

所以我有從mysql加載數據的列表視圖.. 它加載ID(知名度:消失),名稱,價格,..每個列表 我想要它,當我長時間點擊和上下文菜單顯示和我或項目單擊項目出來它會得到物品的ID發送到下一個activity..but煤礦只能得到listview..please的第一個ID幫我從列表視圖中獲取文本併發送到上下文菜單

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.all_products); 

    // Hashmap for ListView 
    productsList = new ArrayList<HashMap<String, String>>(); 

    // Loading products in Background Thread 
    new LoadAllProducts().execute(); 

    // Get listview 
    ListView lv = getListView(); 
    registerForContextMenu(lv); 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 

    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("Barang Masuk/Keluar"); 
    menu.add(0, v.getId(), 0, "Masuk"); 
    menu.add(0, v.getId(), 0, "Keluar"); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 

    if (item.getTitle() == "Masuk") { 
     String pid = ((TextView) findViewById(R.id.pid)).getText() 
     .toString(); 

     // Starting new intent 
     Intent in = new Intent(getApplicationContext(), 
       galian_barang_masuk.class); 
     // sending pid to next activity 
     in.putExtra(TAG_PID, pid); 

     // starting new activity and expecting some response back 
     startActivityForResult(in, 100); 

    } else if (item.getTitle() == "Keluar") { 
     String pid = ((TextView) findViewById(R.id.pid)).getText() 
     .toString(); 

     // Starting new intent 
     Intent in = new Intent(getApplicationContext(), 
       galian_barang_keluar.class); 
     // sending pid to next activity 
     in.putExtra(TAG_PID, pid); 

     // starting new activity and expecting some response back 
     startActivityForResult(in, 100); 
    } else { 
     return false; 
    } 
    return true; 
} 

所以,當我點擊「巴西「從列表視圖,然後右鍵菜單顯示出來.. 它去的列表視圖數據一號‘海神廟’

http://imageshack.com/a/img835/2201/jrth.jpg

http://imageshack.com/a/img600/7562/ftzl.jpg

,如果我在列表視圖使用直接點擊onitem click..its工作與此代碼

lv.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    String pid = ((TextView) view.findViewById(R.id.pid)).getText() 
    .toString(); 

    Intent in = new Intent(getApplicationContext(), 
    galian_barang_masuk.class); 
    in.putExtra(TAG_PID, pid); 

    startActivityForResult(in, 100); 

    } 
    }); 

但是當我使用它的背景下如何error..dunno ..

編輯:我已經找到了它..我做了新的textview ..我通過長時間點擊加載ID並將其保存到新的文本視圖

lv.setOnItemLongClickListener(new OnItemLongClickListener() { 

     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, 
       int pos, long id) { 
      // getting values from selected ListItem 
      String pid = ((TextView) view.findViewById(R.id.pid)).getText() 
        .toString(); 
      x = (TextView) findViewById(R.id.x); 
      x.setText(pid); 

      return false; 
     } 
    }); 

裏面後onContextItemSelected我改變in.putExtra(TAG_PID, pid)in.putExtra(TAG_PID, x.getText().toString());新的TextView,我用它來收集各列表項的ID我長的點擊..

回答

0

您可以使用AdapterContextMenuInfo獲得從上下文菜單中選擇列表項。例如,如果你有一個綁定到你的ListView字符串列表,你會得到這樣的選擇的項目:

@Override 
public boolean onContextItemSelected(MenuItem item) 
{ 
     AdapterView.AdapterContextMenuInfo info = 
      (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
     String listItem = list.get(info.position); 
        //do something with the list item 

} 
+0

thx for ur answer..but error at list.get(info.position);在名單上。應列出。指向ListView lv = getListView(); ..?如果我使用lv.get(info.position);仍然相同.. –

0

findViewById(R.id.pid),列表中的每個行都會有一個觀點相同的ID。所以結果可以是隨機的(不確定它是否總會選擇第一場比賽)。在這些情況下,您可以嘗試使用可以將所需值設置爲視圖標記的自定義適配器。 即在呈現列表行時,使用setTag方法爲textview設置所需的值,然後使用getTag檢索它。

+0

nope ..它不是相同的id ..它從MySQL的負載每個項目有不同的ID它加載到textview每個列表項目..當我使用onCLick它的工作在不同的listitem時打開下一個編輯項目(listitem我點擊)..但它不工作,當我嘗試移動到上下文菜單..幫助 這是我的數據庫..像你可以看到其不同的PID(ID) http://imageshack.com/a/ img545/5865/07lx.jpg –

+0

@AmatirtaAngelo我不是指你的mysql數據。在第一種情況下,您正在執行findViewById(R.id.pid),所以根據我的假設,有多個視圖具有相同的ID(R.id.pid不是動態值)。 它在listitem中的工作點擊,因爲您在特定行的上下文中搜索,例如view.findViewById(R.id.pid))。 希望這有助於。 – gvmani

相關問題