如何在Android中的onItemClick中识别所选视图

时间:2014-02-14 13:00:32

标签: android android-listview listviewitem onitemclicklistener

我有一个列表视图,它的每一行都有3个按钮(Click able Image Views),如果单击它们则会执行不同的操作。

我遇到了麻烦,因为我不知道如何识别用户是否单击了删除按钮或编辑元素。我的意思是,我如何获得用户选择的视图?

我尝试使用onItemClick的参数,但我陷入了困境。

public void onItemClick(AdapterView<?> av, View v, int pos, long id)

感谢。enter image description here

5 个答案:

答案 0 :(得分:1)

我确实喜欢与LinearLayout合作并执行以下操作:

private void setElements() {
    for (Element elem : listElements) {
        View view = li.inflate(R.layout.item_3_object, null);//view represents a line from your list
        Button bt1 = (Button) view.findViewById(R.id.bt1);
        Button bt2 = (Button) view.findViewById(R.id.bt2);
        Button bt3 = (Button) view.findViewById(R.id.bt3);
        bt1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // your code
            }
        });
        // set listeners for the other buttons too
        listView.addView(view); //is the LinearLayout element to fill with lines
    }
}

答案 1 :(得分:1)

尝试在按钮和onClickListener调用view.getTag()。

中添加标签

答案 2 :(得分:0)

private Button button;

button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                        button1Action(); // do your action here
            }
        });

答案 3 :(得分:0)

由于您希望将ListView行中的元素设置为可点击,因此您已将其定义为view这样:即您用Adapter来夸大view < / p>

public View getView(int position, View convertView, ViewGroup parent)
    {
        ContentHolder chld=null;
        View row =  convertView;

        final int p=position;
        ContactModel rowItem = getItem(position);
        if(row==null)
        {
            chld=new ContentHolder();

            LayoutInflater inflate=(LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

            row=inflate.inflate(textViewResourceId,null);   

            chld.btn=(Button)row.findViewById(R.id.listViewButton_http);

            row.setTag(chld);

        }else{
            chld=(ContentHolder) row.getTag();
        }

        Button b1=(Button)row.findViewById(R.id.listViewButton_http);

        b1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

            }
        });

          //similary call your other Button here and it is DONE
    }

希望这可以提供帮助

答案 4 :(得分:0)

view-parameter是你想要的那个。

v.getId()为您提供点击按钮的ID。

例如,使用:

if(v.getId() == R.id.buttonDelete) {
    //your code for delete button here
}