Android 在listview行中选择imageview

Android 在listview行中选择imageview,android,listview,imageview,contacts,Android,Listview,Imageview,Contacts,我目前正在开发一个需要显示联系人列表的应用程序。 你可以点击他们的名字,它会把你带到一个新的屏幕,显示关于这个联系人的信息,并允许你通过选择他们的电话号码给他们打电话。但是, 我想在列表中的姓名旁边添加一个通话图标(当前为ImageView),当用户按下通话图标而不是姓名时,手机会立即呼叫该用户,而不是进入信息页面 我已经将图像添加到行中并使其可单击,但我完全不知道如何为其实现onClickListener。我已经做了很多搜索,但大多数教程似乎只解释如何向行添加图像,而不是如何向行添加OnCli

我目前正在开发一个需要显示联系人列表的应用程序。 你可以点击他们的名字,它会把你带到一个新的屏幕,显示关于这个联系人的信息,并允许你通过选择他们的电话号码给他们打电话。但是,

我想在列表中的姓名旁边添加一个通话图标(当前为ImageView),当用户按下通话图标而不是姓名时,手机会立即呼叫该用户,而不是进入信息页面

我已经将图像添加到行中并使其可单击,但我完全不知道如何为其实现onClickListener。我已经做了很多搜索,但大多数教程似乎只解释如何向行添加图像,而不是如何向行添加OnClickListener并让它做一些事情

下面是列表和行的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

  <ListView android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/android:empty"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/no_notes"/>
</LinearLayout>
你们中的一些人可能会认出Android记事本教程中的代码片段。这是因为我使用记事本代码创建了一个自定义联系人列表。我不是一个好的程序员,所以我需要一些东西开始

这是屏幕的图像


我得到的是,当用户选择其中一个名称时,他会转到该用户的信息页面。我想要的是,当用户选择联系人右侧的电话时,电话会自动拨打该用户的电话号码。如何执行此操作?

填充列表中的每一行时,在适配器的getView()方法中写入imageView.setOnClickListener

尝试使用此
getView
方法创建
自定义BaseAdapter

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        ViewHolder holder;

        if (convertView == null) {
            LayoutInflater viewInflater;
            viewInflater = getLayoutInflater();
            convertView = viewInflater.inflate(R.layout.listview, null);

            holder = new ViewHolder();
            holder.textview = (TextView) convertView.findViewById(R.id.TextView01);
            holder.imageview = (ImageView) convertView.findViewById(R.id.ImageView01);

            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        if (holder.textview != null && position < data_text.length)
            holder.textview.setText(data_text[position]);
        if (holder.imageview != null && position < data_image.length){
            holder.imageview.setImageResource(data_image[position]);
            holder.imageview.setOnClickListener(new OnClickListener() {                 
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(), "Image Clicked : "+position, Toast.LENGTH_LONG).show();                     
                }
            });
        }
        return convertView;
    }

    static class ViewHolder {
      TextView textview;
      ImageView imageview;
    }
@覆盖
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
平面视图充气机;
viewInflater=getLayoutInflater();
convertView=viewInflater.inflate(R.layout.listview,null);
holder=新的ViewHolder();
holder.textview=(textview)convertView.findViewById(R.id.TextView01);
holder.imageview=(imageview)convertView.findViewById(R.id.ImageView01);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
if(holder.textview!=null&&position

谢谢。

您可以在getView方法本身中添加该组件的单击 这是一个小例子

.......

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    .................
    .................
    .................
    txt_assassinate.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.d("Adapter k ", " position " + position);
            openpopup();
        }
    });
    return convertView;
}


.............

您是否实现了自定义
BaseAdapter
来填充列表?不,我还没有。你的意思是这样的:事实上,这个链接解决了我的问题!7小时后,我将能够在这里回答我自己的问题。多亏了你的问题,我终于找到了解决办法。谢谢更正,我还没有找到解决办法。我链接的教程中的图片不是交互式的,所以我的问题仍然存在:(我发布了解决您问题的解决方案。哈哈,我第一次看到这样的截图。
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        ViewHolder holder;

        if (convertView == null) {
            LayoutInflater viewInflater;
            viewInflater = getLayoutInflater();
            convertView = viewInflater.inflate(R.layout.listview, null);

            holder = new ViewHolder();
            holder.textview = (TextView) convertView.findViewById(R.id.TextView01);
            holder.imageview = (ImageView) convertView.findViewById(R.id.ImageView01);

            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        if (holder.textview != null && position < data_text.length)
            holder.textview.setText(data_text[position]);
        if (holder.imageview != null && position < data_image.length){
            holder.imageview.setImageResource(data_image[position]);
            holder.imageview.setOnClickListener(new OnClickListener() {                 
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(), "Image Clicked : "+position, Toast.LENGTH_LONG).show();                     
                }
            });
        }
        return convertView;
    }

    static class ViewHolder {
      TextView textview;
      ImageView imageview;
    }
.......

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    .................
    .................
    .................
    txt_assassinate.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.d("Adapter k ", " position " + position);
            openpopup();
        }
    });
    return convertView;
}


.............