Android:点击按钮后获取listview行的id

时间:2014-08-31 08:12:01

标签: java android listview android-listview

我有一个列表视图,其中包含由数据库填充的每个列表项的相对视图,并包含两个按钮。 当按下列表视图项中的一个按钮时,我需要在列表视图中获取该行的id。换句话说,我试图找到onItemClick方法的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();       
    }

它需要找到相对布局的id,我可以通过ass arg for

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项目中的数据

3 个答案:

答案 0 :(得分:1)

试试这段代码:

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

        }
    };

答案 1 :(得分:0)

当你为你的按钮设置onclicklistener时,你可以为它设置标签(标签可以是行的id),然后当你点击按钮获取它的标签。 (当然,如果你使用自定义适配器)

答案 2 :(得分:0)

你需要某种适配器,在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);

    }
}

https://github.com/m-alcu/SkoltiAlert/blob/master/src/com/alcubier/skoltialert/mentions/GDMentionsList.java