2

私はAndroidアプリを開発しています。このアプリは、インターネットからいくつかの画像を取得して、それらをListViewに配置します。画像の1つをクリックすると、画像に関する詳細を含む別のアクティビティが作成されます。問題は、リストのクリックを追跡できないことです。

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;
    }
}

質問

リストの画像を「クリック可能」にするにはどうすればよいですか?

4

1 に答える 1

1

ImageViewではなくImageButtonを使用しています。ImageButtonはクリックイベントを消費してListViewに到達できないため、miniature_layout.xmlアダプタを変更してImageViewを使用するようにするだけです。getView()

于 2012-11-10T23:02:35.453 に答える