Java Android:单击按钮时获取listview行的id

Java Android:单击按钮时获取listview行的id,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我有一个listview,它包含由数据库填充的每个列表项的相对视图,并包含两个按钮。 当按下列表视图项中的一个按钮时,我需要获取列表视图中该行的id。换句话说,我试图找到与onItemClickListener()的onItemClick方法中的最后一个参数相同的内容,该参数将返回整个项的单击。但是,我正在侦听listview项中的按钮,因此无法使用onItemClickListener() 我在单击按钮时调用了此方法 public void plusClick(View v) {

我有一个listview,它包含由数据库填充的每个列表项的相对视图,并包含两个按钮。 当按下列表视图项中的一个按钮时,我需要获取列表视图中该行的id。换句话说,我试图找到与onItemClickListener()的onItemClick方法中的最后一个参数相同的内容,该参数将返回整个项的单击。但是,我正在侦听listview项中的按钮,因此无法使用onItemClickListener()

我在单击按钮时调用了此方法

public void plusClick(View v) 
    {

        //get the row the clicked button is in
        RelativeLayout vwParentRow = (RelativeLayout)v.getParent();

        //i need to get the id of this RelativeLayout item in the list view

        TextView child = (TextView)vwParentRow.getChildAt(2);
        Button btnChild = (Button)vwParentRow.getChildAt(1);


        int c = Color.CYAN;


        vwParentRow.setBackgroundColor(c); 
        vwParentRow.refreshDrawableState();       
    }
它需要找到我可以传递ass参数的相对布局的id

public Cursor getRow(long rowId) {
    String where = KEY_ROWID + "=" + rowId;
    Cursor c =  db.query(true, DATABASE_TABLE, ALL_KEYS, 
                    where, null, null, null, null, null);
    if (c != null) {
        c.moveToFirst();
    }
    return c;
}

要在此listview项中的数据中创建一个新的光标CONTIA,当您为按钮设置onclicklistener时,您可以为其设置标记(标记可以是行的id),然后单击按钮获取其标记。(当然,如果您使用自定义适配器)

您需要某种适配器,在getView方法中,您必须声明您的事件

有一个例子:

holder.hMention.setOnClickListener(new VerTweet(mention));
而且

public class VerTweet implements View.OnClickListener 
{

    Mention mention;

    public VerTweet ( Mention mention) {
        this.mention = mention;
    }

    public void onClick( View view ){

        Bundle bundle = new Bundle();
        //Le ponemos la variable parametro con el contenido test
        bundle.putInt("idTrack", mention.getIdTrack());
        bundle.putString("Gifo", mention.getGifo());
        bundle.putString("From", mention.getFromUser());
        bundle.putString("Date", mention.getDateMentions());
        bundle.putString("Text", mention.getText());
        bundle.putLong("Status", mention.getLastId());
        Intent i = new Intent(getContext(), Tweet.class);
        i.putExtras(bundle);
        getContext().startActivity(i);

    }
}
请尝试以下代码:

private OnItemClickListener itemClickListener = new OnItemClickListener() {
        public void onItemClick(AdapterView<?> av, View v, int position,
                long id) {  
                // write your logic here        
                // position starts from 0
                // id starts from 1

        }
    };
private-OnItemClickListener项clicklistener=new-OnItemClickListener(){
公共位置(适配器视图av、视图v、内部位置、,
长id){
//把你的逻辑写在这里
//位置从0开始
//id从1开始
}
};

如何设置每个按钮的
OnClickListener
?“在该listview项中的数据中创建一个新光标”…嗯…为什么需要一个新光标?您是否正在使用
光标或适配器
?如果没有,我强烈建议你这样做。这听起来像是你在试图重新发明轮子。按钮目前是用xml安卓:onClick=“plusClick”@sam设置的:最简单的解决方案是用适当的数据(即id,如果你感兴趣的话)标记按钮。或者,自己设置
OnClickListener
。然后,您可以将数据作为额外参数(即构造函数)提供,或者将侦听器作为匿名类实现,直接引用相关数据。