有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    请看这个:OnItemClickListener。实现示例:setOnItemClickListener on custom ListView

    因为在列表视图的每一行中有3个按钮,并且有3个不同的实现,所以还有另一种方法

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
    
        if(null == convertView){
            holder = new ViewHolder();
            convertView = inflater.inflate(LAYOUT_RESOURCE, null);
            holder.btn1 = (Button) convertView.findViewById(R.id.btn1);
            holder.btn2 = (Button) convertView.findViewById(R.id.btn2);
            holder.btn3 = (Button) convertView.findViewById(R.id.btn3);
            //setting tag to reduce hierarchy lookup
            convertView.setTag(holder);
        } else {
            //getting tag to obtain the already found views
            holder = (ViewHolder) convertView.getTag();
        }
        //Updating fields
        holder.btn1.setOnClickListener(commonListener); 
        holder.btn2.setOnClickListener(commonListener); 
        holder.btn3.setOnClickListener(commonListener); 
        //returning the populated view
        return convertView;
    }
    
    OnClickListener commonListener = new OnClickListener(){
    
        @Override
            public void onClick(View v) {
                switch(v.getId()){
                    case R.id.btn1:
                    //do your work
                    break;
                case R.id.btn2:
                    //do your work
                    break;
                    case R.id.btn3:
                    //do your work
                    break;
                    default:
                    break;
                }
            }
        }); 
    /**
     * Holder class to improve performance. Helps in reducing the lookup for
     * views.
     * 
     */
    private static class ViewHolder {
    
        Button btn1;
        Button btn2;
        Button btn3;
    }
    

    希望这有帮助

  2. # 2 楼答案

    因为我在同一行上有许多按钮,所以我最终只是将适配器中的标签设置到所需的位置,然后在按钮触摸上获得标签:

    public void imageClick(View v) 
    {
        int position = (Integer) v.getTag();
    }
    

    我走这条路线的原因是,我需要在ListActivity中完成单击,以访问适配器中没有的一些我需要的数据

  3. # 3 楼答案

    在适配器中尝试以下操作:

    @Override
    public View getView(final int position, View convertView, ViewGroup parent)
    {
        View row = convertView;
        YourWrapper wrapper = null;
    
        if (row == null)
        {
            row = inflater.inflate(R.layout.layout, parent, false);
            wrapper = new YourWrapper (row);
            row.setTag(wrapper);
        }
        else
            wrapper = (YourWrapper) row.getTag();
    
        wrapper.getButton().setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // What you want
            }
        });
    
        return row;
    }