我有一个列表视图,其中包含由数据库填充的每个列表项的相对视图,并包含两个按钮。 当按下列表视图项中的一个按钮时,我需要在列表视图中获取该行的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项目中的数据
答案 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);
}
}