从baseadapter传递项目ID

时间:2013-03-22 09:25:40

标签: android android-activity baseadapter

这里我有一个关于我的代码的简单问题,我怎样才能从基本适配器获取项目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]的值传递给我的活动我怎么能这样做?

任何人都可以帮助我,@先谢谢!!!!

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

您的getItem和getItemID方法不正确。

GetItem应该返回一个数组成员。不是数组索引。

GetItemID应该使用getitem,然后通过返回的成员的getter返回ID。

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

随后将通过附加到使用适配器的listviews的任何setItemClickListener实现为您返回对象ID。

答案 2 :(得分: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()的下一个Activity中:

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

  }

}