android - 使用自定义适配器监听 ListView 上的点击

标签 android android-listview custom-adapter

我正在开发一个 Android 应用程序,它从互联网上检索一些图像并将它们放在 ListView 上。单击其中一个图像时,将创建另一个 Activity ,其中包含有关该图像的一些详细信息。问题是我无法跟踪列表中的点击次数。

Activity .java

public class MyActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        // List<FlickerPicture> pictures = ...
        ListView listView = (ListView) findViewById(android.R.id.list);
        listView.setOnItemClickListener(new OnItemClickListener() {
             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                 Log.d("MyActivity", "You clicked on " + arg2);
                 Toast.makeText(getBaseContext(), "You clicked on " + arg2,
                 Toast.LENGTH_LONG).show();
             }
         });
        ArrayAdapter<FlickerPicture> adapter = new FlickrItemAdapter(this, pictures);
        listView.setAdapter(adapter);
    }
}

FlickrItemAdapter

public class FlickrItemAdapter extends ArrayAdapter<FlickerPicture> {
    public FlickrItemAdapter(Activity activity, List<FlickerPicture> pictures) {
        super(activity, 0, pictures);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Activity activity = (Activity) getContext();
        LayoutInflater inflater = activity.getLayoutInflater();
        // Inflate the views from XML
        View rowView = inflater.inflate(R.layout.miniature_layout, null);
        FlickerPicture picture = getItem(position);
        // Load the image and set it on the ImageView
        ImageButton imageButton = (ImageButton) rowView.findViewById(R.id.miniature_picture);
        try {
            imageButton.setImageBitmap(Util.loadBitmap(picture.getMiniatureLink()));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return rowView;
    }
}

问题

如何使列表中的图片“可点击”?

最佳答案

您使用的是 ImageButton 而不是 ImageView。只需将 miniature_layout.xml 和您的适配器的 getView() 更改为使用 ImageView,因为 ImageButton 正在消耗点击事件,阻止它到达 ListView。

关于android - 使用自定义适配器监听 ListView 上的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326836/

相关文章:

java - Android:尝试切换 Activity 时意外退出

android - 在异步任务中更新 ListView 行

自定义 ListView 适配器上的 Android OnItemClickListener

android - 如何只在sqlite数据库中插入一次?即使我再次返回 Activity 也停止插入?

android - WebView 在打开支付网站时显示空白页面 - Lollipop

java - 如何将 jsonobject 解析为两个不同的列表

android - 如何使用android_asset

Android 自定义适配器 + ListView (未完全工作)

android - 如何将 Listview 所选项目值传递给另一个 Activity

android - ListView 的自定义适配器