Android 从baseadapter传递项目id

Android 从baseadapter传递项目id,android,android-activity,baseadapter,Android,Android Activity,Baseadapter,在这里,我遇到了一个关于代码的简单问题,如何从基本适配器获取项目id 在这里,我从活动中调用了适配器: adapter = new sampleadapter(screen.this,imageIds); listview.setAdapter(adapter); 适配器类: public class sampleadapter extends BaseAdapter { public sampleadapter(screen ListViewActivity,int

在这里,我遇到了一个关于代码的简单问题,如何从基本适配器获取项目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;
            }


        };
public interface MyItemFoundListener{
public void itemFound(int resourceId);
}
在这里:

我需要将
imageIds[position]
的值传递给我的活动我怎么能这样做


有人能帮我吗,@提前谢谢

您的getItem和getItemID方法不正确

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

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

您还需要实现HassTableId,以便在适配器上返回true


然后,使用适配器的ListView上附加的任何setItemClickListener实现都会为您返回对象id。

您的getItem和getItemID方法不正确

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

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

您还需要实现HassTableId,以便在适配器上返回true

然后,使用适配器的ListView上附加的任何setItemClickListener实现都会为您返回对象id。

在适配器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()的下一个活动中:

以上代码仅适用于您可以为不同视图创建的图像。有关更多详细信息,请参阅:

你的下一个活动

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

  }

}
在适配器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()的下一个活动中:

以上代码仅适用于您可以为不同视图创建的图像。有关更多详细信息,请参阅:

你的下一个活动

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

  }

}

将此接口添加到适配器类:

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


        };
public interface MyItemFoundListener{
public void itemFound(int resourceId);
}
在适配器类中创建一个变量

MyItemFoundListener mItemFoundListener;
public void setOnMyItemFoundListener(MyItemFoundListener listener)
{
    mItemFoundListener = listener;
}
将方法添加到适配器类

MyItemFoundListener mItemFoundListener;
public void setOnMyItemFoundListener(MyItemFoundListener listener)
{
    mItemFoundListener = listener;
}
在getView方法中输入

if(mItemFoundListener!=null)
    mItemFoundListener.itemFound(imageIds[position]);
现在在活动类中实现接口

MyActivity implements MyItemFoundListener
public void itemFound(int resourceId){
//Now whenever getView from adapter will be called it will pass the resourceId here in your activity
}
adapter=newsamdecapter(screen.this,imageid)之后
添加
adapter.setOnMyItemFoundListener(此)

将此方法添加到活动类

MyActivity implements MyItemFoundListener
public void itemFound(int resourceId){
//Now whenever getView from adapter will be called it will pass the resourceId here in your activity
}

将此接口添加到适配器类:

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


        };
public interface MyItemFoundListener{
public void itemFound(int resourceId);
}
在适配器类中创建一个变量

MyItemFoundListener mItemFoundListener;
public void setOnMyItemFoundListener(MyItemFoundListener listener)
{
    mItemFoundListener = listener;
}
将方法添加到适配器类

MyItemFoundListener mItemFoundListener;
public void setOnMyItemFoundListener(MyItemFoundListener listener)
{
    mItemFoundListener = listener;
}
在getView方法中输入

if(mItemFoundListener!=null)
    mItemFoundListener.itemFound(imageIds[position]);
现在在活动类中实现接口

MyActivity implements MyItemFoundListener
public void itemFound(int resourceId){
//Now whenever getView from adapter will be called it will pass the resourceId here in your activity
}
adapter=newsamdecapter(screen.this,imageid)之后
添加
adapter.setOnMyItemFoundListener(此)

将此方法添加到活动类

MyActivity implements MyItemFoundListener
public void itemFound(int resourceId){
//Now whenever getView from adapter will be called it will pass the resourceId here in your activity
}


您想知道如何将值从1个活动传递到另一个活动/如果您想传递listView行上的值,请单击,然后为listView设置OnItemClickListner,并使用IntentListView.getAdapter().getItemId(位置)启动另一个活动;只需浏览一些有关ListView的教程…因为您的节目需要学习很多。。。由同一用户复制您想知道如何将值从一个活动传递到另一个活动/如果您想传递listView行上的值,请单击,然后为listView设置OnItemClickListner,并使用IntentListView.getAdapter().getItemId(位置)启动另一个活动;只需浏览一些有关ListView的教程…因为您的节目需要学习很多。。。由同一用户复制我已编辑我的问题这正是您需要的。Naveen是..当我滚动图像时,我将根据该文本获取一些id将设置您是否实现此解决方案?抱歉,它不起作用我已编辑我的问题这正是您需要的。Naveen是..当我滚动图像时,我将根据该文本获取一些idsetHave你是否实施了此解决方案?抱歉,它不起作用我编辑了我的问题@Dhaval Sodha Parmari,我已经给了你你想要的代码。使用你的代码,我将获得正确的职位我如何在活动中使用它检查我编辑的ans…我没有传递到同一活动中的另一个活动我需要来自Adapter的数据i已编辑我的问题@Dhaval Sodha Parmari已为您提供您想要的代码。使用您的代码,我将获得正确的职位如何在活动中使用该职位检查我编辑的ans…..我没有传递到同一活动中的其他活动我需要来自适配器的数据