1

ここで、コードに関する簡単な問題が発生しました。ベースアダプターからアイテム ID を取得するにはどうすればよいですか

ここで、アクティビティからアダプターを呼び出しました。

adapter = new sampleadapter(screen.this,imageIds);

      listview.setAdapter(adapter);

アダプタ クラス:

public class  sampleadapter extends BaseAdapter {

    public sampleadapter(screen ListViewActivity,int[] imageIds) {
                // TODO Auto-generated constructor stub
            }

            public int getCount() {
                return imageIds.length;
            }

            public Object getItem(int position) {
                return position;
            }

            public long getItemId(int position) {
                return position;
            }


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


                vi=convertView;


               vi = LayoutInflater.from(parent.getContext()).inflate(R.layout.explorescreen, null);


                  Holder.images=(ImageView) vi.findViewById(R.id.image);


                 Holder.images.setImageResource(imageIds[position]);


                 vi.setTag(ViewHolder);   

                      Holder = (ViewHolder) vi.getTag();




                        return vi;
            }


        };

ここ :

の値をアクティビティに渡す必要がありますimageIds[position]。どうすればそれを行うことができますか?

誰か助けてくれませんか、@よろしくお願いします!!!!

4

3 に答える 3

1

このインターフェイスをアダプタ クラスに追加します。

public interface MyItemFoundListener{
public void itemFound(int resourceId);
}

アダプタークラスで変数を作成します

MyItemFoundListener mItemFoundListener;

アダプタ クラスにメソッドを追加する

public void setOnMyItemFoundListener(MyItemFoundListener listener)
{
    mItemFoundListener = listener;
}

getView メソッドに置く

if(mItemFoundListener!=null)
    mItemFoundListener.itemFound(imageIds[position]);

Activity クラスに Interface を実装する

MyActivity implements MyItemFoundListener

adapter = new sampleadapter(screen.this,imageIds); 追加後adapter.setOnMyItemFoundListener(this);

このメソッドを Activity クラスに追加します

public void itemFound(int resourceId){
//Now whenever getView from adapter will be called it will pass the resourceId here in your activity
}
于 2013-03-22T09:38:46.400 に答える
0

getItemメソッドとgetItemIDメソッドが正しくありません。

GetItemは配列メンバーを返す必要があります。配列インデックスではありません。

GetItemIDはgetitemを使用してから、返されたメンバーのゲッターを介してIDを返す必要があります。

また、アダプタでtrueを返すには、hasStableIDを実装する必要があります。

オブジェクトIDは、アダプタを使用するリストビューにアタッチされたsetItemClickListener実装によって返されます。

于 2013-03-22T09:32:30.813 に答える
0

アダプタの getView() メソッドに次の行を追加します。

holder.img_p.setOnClickListener(mOnTitleClickListener_image);

あなたのクラスにこのコードを入れてください:

public OnClickListener mOnTitleClickListener_image = new OnClickListener() {
        public void onClick(View v) {
            final int position = listv.getPositionForView((View) v.getParent());

            Intent i = new Intent(Activity.this, nextactivity.class);
            i.putExtra("position",""+position);
            startActivity(i);

        }
    };

onCreate() の次のアクティビティで:

String extras = getIntent().getStringExtra("position");

上記のコードは、詳細については、異なるビュー用に多数作成できる画像のみです。これを参照してください: https://stackoverflow.com/a/12813906/1168654

あなたの次の活動

public class NextActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                String extras = getIntent().getStringExtra("position");
// your position is below
                int pos = Integet.parseInteget(extras);
                Log.e("position-->",""+pos);
// now you can use this position any where in your class

  }

}
于 2013-03-22T09:38:19.867 に答える