-1

我想在android中創建菜單。實際上,當我長按列表項時,我想顯示刪除圖標。 我想這樣。我建立一個my_menu.xml如何在android上點擊列表視圖創建菜單?

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/id_delete" 

    android:title="Delete" 
    android:icon="@drawable/delete"></item> 
</menu> 

然後,我創建列表視圖。我的列表視圖是視圖顯示,但它沒有顯示刪除圖標,當我長按排.Mean我想要顯示菜單選項,當我長按行。我能夠顯示列表..但菜單不顯示。

這裏是我的java代碼。

public class MainActivity extends AppCompatActivity { 
    ListView listView; 
    ArrayList arrayList = new ArrayList(); 
    ArrayList selectionList = new ArrayList(); 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     listView = (ListView) findViewById(R.id.list_view); 

     Log.d("==", loadJSONFromAsset()); 
     try { 
      JSONArray js = new JSONArray(loadJSONFromAsset()); 
      for (int i = 0; i < js.length(); i++) { 
       JSONObject obj = js.getJSONObject(i); 
       arrayList.add(obj.getString("name")); 
      } 
      //adp=new CustomAddapter(getApplicationContext(),R.layout.list_view); 


      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); 
      listView.setAdapter(adapter); 
      listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); 
      listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() { 
       @Override 
       public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { 
        if (checked) { 
         selectionList.add(arrayList.get(position)); 
         // arrayList.add(arr.) 
        } 

       } 

       @Override 
       public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
        MenuInflater menuInflater = getMenuInflater(); 
        menuInflater.inflate(R.menu.my_menu, menu); 
        return true; 
       } 

       @Override 
       public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
        return false; 
       } 

       @Override 
       public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
        return false; 
       } 

       @Override 
       public void onDestroyActionMode(ActionMode mode) { 

       } 
      }); 


     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    public String loadJSONFromAsset() { 
     String json = null; 
     try { 

      InputStream is = getAssets().open("data.json"); 

      int size = is.available(); 

      byte[] buffer = new byte[size]; 

      is.read(buffer); 

      is.close(); 

      json = new String(buffer, "UTF-8"); 


     } catch (IOException ex) { 
      ex.printStackTrace(); 
      return null; 
     } 
     return json; 

    } 


} 

回答

0

創建上下文菜單:

註冊您的ListView的上下文菜單:

registerForContextMenu(listView);` 

然後,添加菜單項:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 
{ 
    if(v.getId() == R.id.your_list_view) 
    { 
     menu.setHeaderTitle("My menu"); 
     menu.add(Menu.NONE, 0, 0, "Delete"); 
     menu.add(Menu.NONE, 1, 1, "Cancel"); 
     // etc... 
    } 
} 

但據圖標去...

上下文菜單:不支持項目快捷方式和項目圖標。

http://developer.android.com/reference/android/view/Menu.html

然而,如果你的搜索,這樣你可以找到辦法做到這一點(代碼示例,鏈接庫)。

相關問題