如何找到我的按钮ID';Android Java中的ListView行中有什么?

如何找到我的按钮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

我有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 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());