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 类中实现接口

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,然后通过返回成员的 getter 返回 ID。

您还需要实现 hasStableIDs 以在您的适配器上返回 true。

然后,附加到使用您的适配器的列表视图的任何 setItemClickListener 实现将为您返回对象 ID。

于 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 回答