2016-04-14 14 views
0

我卡在一点。 我想添加弹出菜单到自定义列表视图中的每个项目。 我已经试过,但只在最后一个位置或list.I的最后一个项目雨后春笋般冒出来我得到它之所以在最后的位置来,但没有得到解决 我在这里添加适配器类如何将弹出菜单添加到自定义列表视图到每个项目android

public class InterestLevelAdapterEditable extends BaseAdapter { 

    private Activity activity; 
    private TextView level; 
    private InterestLevel m; 
    private LayoutInflater inflater; 
    private List<InterestLevel> interestLevelList; 

    public InterestLevelAdapterEditable(Activity activity, List<InterestLevel> interestLevelList) { 
     this.activity = activity; 
     this.interestLevelList = interestLevelList; 
    } 

    @Override 
    public int getCount() { 
     return interestLevelList.size(); 
    } 

    @Override 
    public Object getItem(int location) { 
     return interestLevelList.get(location); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (inflater == null) 
      inflater = (LayoutInflater) activity 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) 
      convertView = inflater.inflate(R.layout.interest_level_editable, null); 


     TextView sports_name = (TextView) convertView.findViewById(R.id.sportsName); 
     level = (TextView) convertView.findViewById(R.id.level); 

     m = interestLevelList.get(position); 

     sports_name.setText(m.getSports_name()); 

     level.setText(m.getLevel()); 
     level.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //Creating the instance of PopupMenu 
       PopupMenu popup = new PopupMenu(activity, level); 
       //Inflating the Popup using xml file 
       popup.getMenuInflater().inflate(R.menu.popup_level, popup.getMenu()); 

       //registering popup with OnMenuItemClickListener 
       popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
        public boolean onMenuItemClick(MenuItem item) { 
         level.setText(item.getTitle()); 
         return true; 
        } 
       }); 

       popup.show();//showing popup menu 
      } 
     }); 

     return convertView; 
    } 

} 

我得到的理由是,我将不得不通过点击监听器的位置,但没有得到我应该如何添加位置或(具有位置的InterestLevel的m对象)。

在此先感谢。 Screenshot

回答

0

创建PopupMenusetOnClickListener()show()onClick() -

  //Creating the instance of PopupMenu 
      final PopupMenu popup = new PopupMenu(activity, level); 
      //Inflating the Popup using xml file 
      popup.getMenuInflater().inflate(R.menu.popup_level, popup.getMenu()); 

      //registering popup with OnMenuItemClickListener 
      popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
       public boolean onMenuItemClick(MenuItem item) { 
        level.setText(item.getTitle()); 
        return true; 
       } 
      }); 

level.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) {   

      popup.show();//showing popup menu 
     } 
    }); 
+0

感谢Shadab的回答,但这种方法并没有更新列表项的值到每个位置时,它仅更新最后列表项的值,因为它因此我们需要通过在每个位置更新项目文本的位置。 – user3679536

0

我需要弹出菜单像列表视图。我试试这个代码,它是正确的(reference):

private static final String TITLE = "title"; 
private static final String ICON = "icon"; 

private List<HashMap<String, Object>> data = new ArrayList<HashMap<String, 
Object>>(); 

// Use this to add items to the list that the ListPopupWindow will use 
private void addItem(String title, int iconResourceId) { 
HashMap<String, Object> map = new HashMap<String, Object>(); 
map.put(TITLE, title); 
map.put(ICON, iconResourceId); 
data.add(map); 
} 

// Call this when you want to show the ListPopupWindow 
private void showListMenu(View anchor) { 
ListPopupWindow popupWindow = new ListPopupWindow(this); 

ListAdapter adapter = new SimpleAdapter(
     this, 
     data, 
     android.R.layout.activity_list_item, // You may want to use your own cool layout 
     new String[] {TITLE, ICON}, // These are just the keys that the data 
uses 
     new int[] {android.R.id.text1, android.R.id.icon}); // The view ids 
to map the data to 


popupWindow.setAnchorView(anchor); 
popupWindow.setAdapter(adapter); 
popupWindow.setWidth(400); // note: don't use pixels, use a dimen resource 
popupWindow.setOnItemClickListener(myListener); // the callback for when a list item is selected 
popupWindow.show(); 
} 

custom layout and work as listview

相关问题