如何找到我的按钮ID';Android Java中的ListView行中有什么?
我有1个列表视图,5行,所以当我运行代码时,我得到了5个item_Titel,5个item_Datum,5个item_Intro和5个item_按钮。但我不知道怎么才能找到R.Id。从每个项目,每行。当您使用松散的文本视图和按钮时,您可以在XML中调用它,例如:@id/“clicked_button1”、@id/“clicked_button2”、@id/“clicked_button3”等 然后我可以使用开关箱并填充它, 例如:如何找到我的按钮ID';Android Java中的ListView行中有什么?,java,android,xml,listview,button,Java,Android,Xml,Listview,Button,我有1个列表视图,5行,所以当我运行代码时,我得到了5个item_Titel,5个item_Datum,5个item_Intro和5个item_按钮。但我不知道怎么才能找到R.Id。从每个项目,每行。当您使用松散的文本视图和按钮时,您可以在XML中调用它,例如:@id/“clicked_button1”、@id/“clicked_button2”、@id/“clicked_button3”等 然后我可以使用开关箱并填充它, 例如: public class OnClick implements
public class OnClick implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.clicked_Button1:
Url = 1;
break;
case R.id.clicked_Button2:
Url = 2;
break;
case R.id.clicked_Button2:
Url = 3;
break;
但现在我使用的是listview..但我如何才能找到哪个R.id.“项目按钮”???!!!"
我现在需要用吗
我希望我的问题/解释现在更清楚一点!;-)
谢谢你帮助我
添加了XML项。\u视图:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/item_Titel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:textColor="#FFFFFF"
android:textSize="20dp" />
<TextView
android:id="@+id/item_Datum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/item_Titel"
android:layout_marginBottom="5dp"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:textColor="#FFFFFF"
android:textSize="13dp" />
<TextView
android:id="@+id/item_Intro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/item_Datum"
android:layout_marginBottom="5dp"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:textColor="#FFFFFF"
android:textSize="15dp" />
<Button
android:id="@+id/item_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/item_Intro"
android:layout_alignParentRight="true"
android:layout_gravity="right"
android:layout_marginBottom="10dp"
android:layout_marginRight="3dp"
android:background="@drawable/mybutton"
android:padding="9dp"
android:textColor="#FFFFFF"
android:textSize="10dp" />
</RelativeLayout>
这里是ListAdapter部分和getView部分:
private class MyListAdapter extends ArrayAdapter<Post> {
public MyListAdapter() {
super(MainActivity.this, R.layout.item_view, myPost);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.item_view,
parent, false);
}
Post currentPost = myPost.get(position);
// Titel:
TextView TitelText = (TextView)
itemView.findViewById(R.id.item_Titel);
TitelText.setText(Html.fromHtml(currentPost.getTitel()));
// Datum:
TextView DatumText = (TextView)
itemView.findViewById(R.id.item_Datum);
DatumText.setText(Html.fromHtml(currentPost.getDatum()));
// Intro:
TextView IntroText = (TextView)
itemView.findViewById(R.id.item_Intro);
IntroText.setText(Html.fromHtml(currentPost.getIntro()));
// Button:
Button ButtonNumber = (Button)
itemView.findViewById(R.id.item_Button);
ButtonNumber.setText(Html.fromHtml(currentPost.getButton()));
ButtonNumber.setOnClickListener(new OnClick());
return itemView;
}
}
私有类MyListAdapter扩展了ArrayAdapter{
公共MyListAdapter(){
超级(MainActivity.this、R.layout.item_视图、myPost);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图项视图=转换视图;
如果(itemView==null){
itemView=GetLayoutFlater()。充气(R.layout.item_视图,
父母,假);
}
Post currentPost=myPost.get(位置);
//滴度:
TextView TitelText=(TextView)
itemView.findViewById(R.id.item_Titel);
TitelText.setText(Html.fromHtml(currentPost.getTitel());
//数据:
TextView DatumText=(TextView)
itemView.findViewById(R.id.item_数据);
setText(Html.fromHtml(currentPost.getDatum());
//简介:
TextView IntroText=(TextView)
itemView.findViewById(R.id.item\u简介);
setText(Html.fromHtml(currentPost.getIntro());
//按钮:
按钮按钮编号=(按钮)
itemView.findViewById(R.id.item_按钮);
ButtonNumber.setText(Html.fromHtml(currentPost.getButton());
setOnClickListener(新的OnClick());
返回项目视图;
}
}
据我所知,您有一个包含5行的listview。每行中都有文本和按钮
在阵列适配器中为行充气时,需要获取按钮并连接侦听器
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
row = inflater.inflate(mLayoutResourceId, parent, false);
}
Button button = (Button)row.findViewById(R.id.item_Button);
button.setOnClickListener(this);
}
这里有一个与您的问题类似的链接。
您可以在getView()函数中使用“int position”变量来推断它是列表中的哪个项目。然后,根据该变量而不是按钮ID来分配URL(您可以确保“position”变量将对应适配器中视图的顺序)。完全不要使用OnClick类。在确定要在getView()函数中使用的URL后,可以使用setTag()和getTag()函数“存储”实际按钮实例(或扩展视图的对象的任何实例)中的任何对象(在本例中,它是字符串)
我添加了一行,其中包含.setTag()。现在它工作得很好!为什么ID是随机的?它们没有在XML布局中定义吗?如果它们是在java中创建的,那么在创建它们时保留对它们的引用。如果您的问题是关于查找名为OnClick的按钮(您已将同一个OnClickListener分配给许多按钮),则可以使用“视图”“作为参数传入并将其转换回按钮。我不确定这个问题是什么,但这可能会有所帮助。您有5个Listview项目,每个项目都包含一个按钮,还是每个Listview项目都包含5个按钮?如果发布XML和一些代码,这将很容易理解。您需要有一个自定义适配器类,可以在按钮中设置
onClickListener
。看一看示例您应该创建一个item类和一个自定义视图充气器。请看这里:
private class MyListAdapter extends ArrayAdapter<Post> {
public MyListAdapter() {
super(MainActivity.this, R.layout.item_view, myPost);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.item_view,
parent, false);
}
Post currentPost = myPost.get(position);
// Titel:
TextView TitelText = (TextView)
itemView.findViewById(R.id.item_Titel);
TitelText.setText(Html.fromHtml(currentPost.getTitel()));
// Datum:
TextView DatumText = (TextView)
itemView.findViewById(R.id.item_Datum);
DatumText.setText(Html.fromHtml(currentPost.getDatum()));
// Intro:
TextView IntroText = (TextView)
itemView.findViewById(R.id.item_Intro);
IntroText.setText(Html.fromHtml(currentPost.getIntro()));
// Button:
Button ButtonNumber = (Button)
itemView.findViewById(R.id.item_Button);
ButtonNumber.setText(Html.fromHtml(currentPost.getButton()));
ButtonNumber.setOnClickListener(new OnClick());
return itemView;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
row = inflater.inflate(mLayoutResourceId, parent, false);
}
Button button = (Button)row.findViewById(R.id.item_Button);
button.setOnClickListener(this);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.item_view,
parent, false);
}
...
String url;
switch(position){
case 0: url = "url for the 1 button"; break;
case 1: url = "url for the 2 button"; break;
case 2: url = "url for the 3 button"; break;
case 3: url = "url for the 4 button"; break;
case 4: url = "url for the 5 button"; break;
default: url = "http://www.google.com"; break;
}
Button button = (Button)itemView.findViewById(R.id.item_Button);
button.setTag(url);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = (String)v.getTag();
//do what you need with URL
startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
});
return itemView;
}
// Button:
Button ButtonNumber = (Button) itemView.findViewById(R.id.item_Button);
ButtonNumber.setTag(currentPost.getButtonid());
ButtonNumber.setText(Html.fromHtml(currentPost.getButton()));
ButtonNumber.setOnClickListener(new OnClick());
Log.e("ButtonNumber.setId", "Found:" + ButtonNumber.getTag());