2016-01-25 56 views
1

我有一個簡單的上下文菜單,我想做一個Toast來顯示一條短消息。在ListView上的Longclick上打開上下文菜單

問題是我無法讓項目Position顯示我想要的具體細節,因爲適配器的Position超出了範圍。

這是我的代碼:

public class MainActivity extends AppCompatActivity implements  View.OnClickListener { 

private ArrayAdapter<Product> adapter; 
private ListView listView; 
private ContextMenu menu; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    listView = (ListView) findViewById(R.id.listView); 
    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1); 
    listView.setAdapter(adapter); 

    registerForContextMenu(listView); 

    adapter.add(new Product("shoe", 150)); 
    adapter.add(new Product("T shirt", 80)); 
    adapter.add(new Product("pants", 100)); 
    adapter.add(new Product("lamp", 300)); 
    adapter.add(new Product("ball", 20)); 
    adapter.add(new Product("egg", 1)); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { 
      Toast.makeText(MainActivity.this, adapter.getItem(position) + ": " + adapter.getItem(position).getPrice(), Toast.LENGTH_SHORT).show(); 

     } 
    }); 

} 


@Override 
public void onClick(View v) { 

} 


@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    menu.setHeaderTitle("choose what to do"); 
    menu.add(1, 0, 0, "product details"); 
    menu.add(1,1,1,"delete"); 

} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 
     case 0: 
      Toast.makeText(MainActivity.this, adapter... + ": " + adapter..., Toast.LENGTH_SHORT).show(); 
      break; 
    } 
    return true; 
} 
} 
+0

你能否把一些更專注於你真正想做什麼? –

回答

1

我認爲,因爲它好像你想知道哪些項目已被用戶長按並想知道該項目的位置,這樣就可以得到價值適配器或列表。 如果我理解正確你解決PFB

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
info.position;//This is your desired position. 

現在你的價值,你可以用它玩。恩喬伊!

快樂編碼!

+0

謝謝你的傢伙:) – Roish

+0

你永遠是受歡迎的人;) –