Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android listview setOnClickListener从listview返回错误数据_Android_Listview - Fatal编程技术网

Android listview setOnClickListener从listview返回错误数据

Android listview setOnClickListener从listview返回错误数据,android,listview,Android,Listview,您好,我正在使用avocarrot sdk制作本地广告。我已经成功地在我的listview中实现了,广告显示得非常好。但当我使用setOnClickListener单击listview listitem时,我得到了错误的数据。下面是我的代码 阿沃罗特接合器 avocarrotInstream = new com.avocarrot.androidsdk.AvocarrotInstream( listAdapter, /* pass your listAdapte

您好,我正在使用avocarrot sdk制作本地广告。我已经成功地在我的listview中实现了,广告显示得非常好。但当我使用setOnClickListener单击listview listitem时,我得到了错误的数据。下面是我的代码

阿沃罗特接合器

avocarrotInstream = new com.avocarrot.androidsdk.AvocarrotInstream(
            listAdapter,      /* pass your listAdapter */
            this,                   /* reference to your Activity */
            "my api key",       /* replace with your Avocarrot API Key */
            "my placement key"  /* replace with your Avocarrot Placement Key */
    );
    avocarrotInstream.setLogger(true, "ALL");
    avocarrotInstream.setSandbox(true);

    avocarrotInstream.setLayout(R.layout.avocarrot_feed_row, R.id.avo_container, R.id.feed_title,         R.id.feed_description, R.id.feed_icon, R.id.feed_image, R.id.feed_button);

    // Bind the created avocarrotInstream adapter to your list instead of your listAdapter
    listView.setAdapter(avocarrotInstream);
我的听众

private class Click2 implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {

        Object obj = avocarrotInstream.getItem(position);
        String name = ((TextView) view.findViewById(R.id.name)).getText()
                .toString();
        String status = ((TextView) view.findViewById(R.id.txtStatusMsg))
                .getText().toString();

        String bitmap = ((FeedItem) feedItems.get(position)).getImge();
        Intent in = new Intent(NewBlogStyleHindi.this, SingleActivity.class);
        in.setType("text/html");
        in.putExtra(TAG_TITLE, name);
        in.putExtra("images", bitmap);
        in.putExtra(TAG_TEXT, status);
        startActivity(in);
    }
}
私有类Click2实现ListView.OnItemClickListener{
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
Object obj=instream.getItem(位置);
字符串名称=((TextView)view.findViewById(R.id.name)).getText()
.toString();
字符串状态=((TextView)view.findViewById(R.id.txtStatusMsg))
.getText().toString();
字符串位图=((FeedItem)feedItems.get(position)).getImge();
Intent in=newintent(NewBlogStyleHindi.this,SingleActivity.class);
in.setType(“text/html”);
in.putExtra(标签标题、名称);
in.putExtra(“图像”,位图);
in.putExtra(标签文本、状态);
星触觉(in);
}
}
并且Avorrot提供了listview setonclicklistener作为

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
      /* get your object from avocarrotInstream for clicked position */
      Object obj = avocarrotInstream.getItem(position);
    }
  });
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
/*从流内获取对象以获得单击位置*/
Object obj=instream.getItem(位置);
}
});

由于广告行正在增加。

我是Avocarrot支持团队的Nikos

我想你已经和我们的支持服务联系过了,但是我在这里发布了一个答案,以防其他人有类似的问题

在OnItemClickListener中,必须使用Avocarrot适配器中的对象,而不是直接从ArrayList访问对象

因此,在你的情况下:

Object obj = avocarrotInstream.getItem(position);
将进料器返回到正确的位置,并且操作员将更改为:

private class Click2 implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    FeedItem feed = (FeedItem) avocarrotInstream.getItem(position);
    String name = feed.getName();
    String status = feed.getStatus();
    String bitmap = feed.getImge();
    Intent in = new Intent(NewBlogStyleHindi.this, SingleActivity.class);
    in.setType("text/html");
    in.putExtra(TAG_TITLE, name);
    in.putExtra("images", bitmap);
    in.putExtra(TAG_TEXT, status);
    startActivity(in);

    }
}
私有类Click2实现ListView.OnItemClickListener{
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
FeedItem feed=(FeedItem)流内的getItem(位置);
字符串名称=feed.getName();
字符串状态=feed.getStatus();
字符串bitmap=feed.getImge();
Intent in=newintent(NewBlogStyleHindi.this,SingleActivity.class);
in.setType(“text/html”);
in.putExtra(标签标题、名称);
in.putExtra(“图像”,位图);
in.putExtra(标签文本、状态);
星触觉(in);
}
}

为什么不使用
listView.setOnItemClickListener(新建Click2())?这就是我正在使用的,但由于本机ads行增加,所以我得到了一个列表项返回的数据..如果整个提要数据中有两个ads,那么我会使用setOnClickListener返回两个列表项数据,您能告诉我如何使用此行对象obj=avocarrowinStream.getItem(position)访问列表视图数据吗;那行有错误吗?我不明白为什么这不起作用。logcat没有错误,我说它工作得很好…第一行是feed第二行是ads然后feed row然后feed row然后ad…所以当我单击第一行时,我使用onclicklistener获得正确的数据,但在广告之后,当我单击row时,我得到了一行数据,因为行被广告增加了…我如果您可以阅读问题,则无需在注释中重新发布代码(对于简单的代码片段,您不应该这样做)。并且您已经在访问listView中的数据。如果广告影响了数据,那么您应该重新考虑如何存储数据。