我有一個簡單的上下文菜單,我想做一個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;
}
}
你能否把一些更專注於你真正想做什麼? –