4

私は2つのレイアウトを持っています

  1. main.xml ----- 単一の ListView (たとえば、listview_01) を使用します。
  2. row.xml----- ImageView(たとえば imageView_01) と TextView(たとえば textView_01) を使用

私が持っている配列データを使用listview_01して行を埋めています。のイベントで 操作を実行したかったのですが、それは機能しています。 に追加しました。row.xml
onclick()imageView_01
onClick()imageView_01getView()CustomlistAdapter

しかし、CustomListAdapter で、行画像の listview_01 の onClick() イベントで行インデックスを取得する方法を教えてもらえますか?

これが私のコードです

申し訳ありませんが、アクティビティ全体とアダプター コードをアップロードできません

いくつかの活動コード

listView_episodesList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub

        mQuickAction.show(arg1);

    }
});

SOME アダプター コード

ImageView imageView_EpisodePic = (ImageView) convertView.findViewById(R.id.imageView_episode_pic);
drawableManager.fetchDrawableOnThread(episodeTemp.episodeImage, imageView_EpisodePic);

imageView_EpisodePic.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Toast.makeText(context, "Click on image", Toast.LENGTH_LONG).show();
    }
});

私のアクティビティから、クリックした listView 行インデックスにアクセスできます。しかし、アダプターからはできません。クリックして行インデックスを取得したいだけですListView(main.xml)ImageView (row.xml)

4

5 に答える 5

1

リストビューアイテムのインデックスを返すを試してみることができmListView.getPositionForView(v);ます。onClick(View v)(注:アダプターはわかりません。使用できると思います)

于 2012-04-16T13:26:56.863 に答える
0

アダプターのonItemSelectedListeneter()ビューと位置、およびIDが表示されます。どの位置が必要か(arg1

于 2012-04-16T13:33:02.080 に答える
0

私は同じ問題に遭遇し、カスタム アダプター クラス内からこれを行うためのより良い方法が見つからないことに驚きました。Nikola のソリューションは、Activity または Fragment クラス内から機能しますが、カスタム アダプターでは機能しません。

最初のインデックス [0] が正しく返されないオブジェクトの ImageView 属性にタグを設定する際に問題がありましたが、オブジェクトの 'name' 属性のタグを設定すると問題なく機能しました。これを行うためのより良い方法を探し続けますが、今のところこれでうまくいくようです。

     public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;

        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.row_project, null);

            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.name = (TextView)view.findViewById(R.id.textProjectName);
            viewHolder.desc = (TextView)view.findViewById(R.id.textProjDesc);
            viewHolder.image = (ImageView)view.findViewById(R.id.imgProj);           
            viewHolder.name.setTag(position);

            Log.d(TAG, "Position: " + position);


            viewHolder.image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d(TAG, "Image Selected at Index: " + viewHolder.name.getTag());
                }

            });

            view.setTag(viewHolder);
        }
        else {
            view = convertView;
            ((ViewHolder) view.getTag()).name.setTag(list.get(position));
        }

        ViewHolder holder = (ViewHolder) view.getTag();
        holder.name.setText(list.get(position).getName());
        holder.desc.setText(list.get(position).getDescription());

        return view;
    }
} 
于 2014-02-19T02:02:19.087 に答える