Java Android:单击按钮时获取listview行的id
我有一个listview,它包含由数据库填充的每个列表项的相对视图,并包含两个按钮。 当按下列表视图项中的一个按钮时,我需要获取列表视图中该行的id。换句话说,我试图找到与onItemClickListener()的onItemClick方法中的最后一个参数相同的内容,该参数将返回整个项的单击。但是,我正在侦听listview项中的按钮,因此无法使用onItemClickListener() 我在单击按钮时调用了此方法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) {
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
。然后,您可以将数据作为额外参数(即构造函数)提供,或者将侦听器作为匿名类实现,直接引用相关数据。