Android 如何从包含可单击项目(imagebuttons)的ListView中获取行项目(每行有3个项目)的ID?

Android 如何从包含可单击项目(imagebuttons)的ListView中获取行项目(每行有3个项目)的ID?,android,android-listview,android-studio,android-imagebutton,Android,Android Listview,Android Studio,Android Imagebutton,我在stackoverflow上读了很多关于这个问题的文章,但我没有解决我的问题。我有一个有行的ListView,每行有3个imagebutton,当我在setOnItemClickListener中单击imagebutton代码时,它不起作用 我需要单击行中的哪个itemimagebutton。在我的列表视图中将有许多行 我听说过SimpleCrsorAdapter、fragmentlist、cursorloader,但我的最低SDK要求是10 在这段代码中,我使用了6个图像,但我将使用更多的

我在stackoverflow上读了很多关于这个问题的文章,但我没有解决我的问题。我有一个有行的ListView,每行有3个imagebutton,当我在setOnItemClickListener中单击imagebutton代码时,它不起作用


我需要单击行中的哪个itemimagebutton。在我的列表视图中将有许多行

我听说过SimpleCrsorAdapter、fragmentlist、cursorloader,但我的最低SDK要求是10

在这段代码中,我使用了6个图像,但我将使用更多的图像100

我的java代码:

package foxstrot.ghp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class images extends  Activity {

    int[] images = {R.raw.a2, R.raw.a3, R.raw.im2, R.raw.a4, R.raw.a5, R.raw.im6,};

    ListView lv;

    Intent i = new Intent(this, king.class);

    final String LOG_TAG = "L";


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.images);



        lv = (ListView) findViewById(R.id.lv);

        ArrayList<Map <String, Object>> data = new ArrayList<Map<String, Object>>(images.length);
        Map<String, Object> m;

        for(int i = 0; i < images.length; i++){


            m = new HashMap<String, Object>();
            m.put("image1", images[i]);
            m.put("image2", images[i+1]);
            m.put("image3", images[i+2]);
            i = i + 2;
            data.add(m);

        }

        String[] from = {"image1","image2","image3"};
        int[] to = {R.id.ib1, R.id.ib2, R.id.ib3};

        SimpleAdapter sAdapter = new SimpleAdapter(this, data, R.layout.a_, from, to);

        lv.setAdapter(sAdapter);


        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                i.putExtra("id", id);
                startActivity(i);
                Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "
                        + id);
            }
        });






    }












}
适配器中使用的我的XML代码容器

在images.xml布局文件中,将ImageButtons的可单击和可聚焦属性设置为false。点击按钮现在可以通过并由ListView处理

setOnItemClickListener用于检测对列表项行的单击,而不是对这些项行上的特定按钮的单击

对于xml上行的每个按钮,您都需要添加一个onClick属性,该属性带有处理click:android:onClick=myFunction的函数

在您的活动中,您必须创建一个函数:

public void myFunctionView v{…}


如果需要传递有关单击了哪一行的特定信息,可以在适配器的getView方法的按钮视图上添加标记。有关此项的更多信息,请点击此处:

显示您的getView。。。代码,是否有clicklistener for imagebutton?我没有clicklistener for imagebutton,因为我使用了6个图像并将使用更多图像,以及clicklistener如何定义单击哪个imagebutton的原因使用listview。类应以大写字母开头。将您的成员变量设置为私有。不要对6个图像使用listview。使用滚动视图,内部为线性布局,内部为线性布局添加图像。通过findViewById访问onCreate中的按钮。CheersI将使用100个图像,我在开始时加载6个图像。然后为行创建一个新布局。该类应该从一个视图组扩展,并且在该类内部依次加载带有findViewById的按钮。然后实现onClickListener。该类应用于列表视图,您必须创建自己的适配器。我需要单击行中的哪个itemimagebutton。在我的ListView中会有很多行。我不理解你的问题,你在每个imagebutton上放了一个onClick函数3个不同的函数如果你想,如果你需要跟踪每个按钮所属的ListView行,请查看我发布的关于如何使用settag实现这一点的链接。Evripidis Drakos非常感谢,myAdapter中的settag解决了问题。这不起作用,因为当我单击imagebutton时,您问我,setOnItemClickListener中的代码以前不起作用。现在,你已经改变了你的问题!
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="125dp"
    >



        <ImageButton
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/ib1"
            android:layout_weight="1"
            android:scaleType="fitXY"

            />

        <ImageButton
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/ib2"
            android:layout_weight="1"
            android:scaleType="fitXY"
            />

        <ImageButton
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/ib3"
            android:layout_weight="1"
            android:scaleType="fitXY"
            />



</LinearLayout>
<ImageButton
    android:id="@+id/ib1"
    ...
    android:clickable="false"
    android:focusable="false" />