Android 延迟加载onclick列表视图

Android 延迟加载onclick列表视图,android,listview,onclick,textview,android-lazyloading,Android,Listview,Onclick,Textview,Android Lazyloading,我正在为列表视图编写一个lazyload代码,在这个代码中,我获得了一个json格式的文本和图像url,并将它们放在列表视图中 图像和文本都相应地显示为我想要的 我面临的问题是,当列表向下或向上滚动时,视图的索引会受到干扰 假设我的列表中有10个元素,图像从侧面预览。最初我可以看到4个元素的onclick动作很好, 但当我向下滚动并单击第7个ir第8个元素时,索引会受到干扰,并导致空指针异常 l2.setOnItemClickListener(new OnItemClickListener

我正在为列表视图编写一个lazyload代码,在这个代码中,我获得了一个json格式的文本和图像url,并将它们放在列表视图中

图像和文本都相应地显示为我想要的

我面临的问题是,当列表向下或向上滚动时,视图的索引会受到干扰

假设我的列表中有10个元素,图像从侧面预览。最初我可以看到4个元素的onclick动作很好, 但当我向下滚动并单击第7个ir第8个元素时,索引会受到干扰,并导致空指针异常

   l2.setOnItemClickListener(new OnItemClickListener() {
    @Override
     public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
        {
            View curr = parent.getChildAt((int) id);
            TextView c = (TextView)curr.findViewById(R.id.text);
            String sel_item = c.getText().toString();
            Intent intent = new Intent(SubCatListActivity.this,GridActivity.class);
             adapter.imageLoader.clearCache();
            intent.putExtra("gall", sel_item);
            intent.putExtra("cate", cate);
            startActivity(intent);
            Toast.makeText(SubCatListActivity.this,sel_item, Toast.LENGTH_SHORT).show();

         }});
l2.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
View curr=parent.getChildAt((int)id);
TextView c=(TextView)curr.findViewById(R.id.text);
字符串sel_item=c.getText().toString();
意向意向=新意向(SubCatListActivity.this,GridActivity.class);
adapter.imageLoader.clearCache();
意向。额外(“胆汁”,选择项目);
意向。额外(“cate”,cate);
星触觉(意向);
Toast.makeText(SubCatListActivity.this,sel_项,Toast.LENGTH_SHORT.show();
}});
问题似乎出在textview上,因为我无法在onclick of list上获得所需的文本


如果我触摸第6个元素,我会得到第7项或第8项的文本。

您可以尝试将此行更改为

TextView c = (TextView) view.findViewById(R.id.text);
并删除第一行
View curr=parent.getChildAt((int)id)

l2.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
TextView c=(TextView)view.findViewById(R.id.text);
字符串sel_item=c.getText().toString();
意向意向=新意向(SubCatListActivity.this,GridActivity.class);
adapter.imageLoader.clearCache();
意向。额外(“胆汁”,选择项目);
意向。额外(“cate”,cate);
星触觉(意向);
Toast.makeText(SubCatListActivity.this,sel_项,Toast.LENGTH_SHORT.show();
}});

onItemClick方法在您单击的视图中传递。在上面的代码中,您将其命名为“视图”。getChildAt((int)id)不会为您提供正确的视图

尝试在位置之间切换并获取文本查看文本为:

(TextView) view.getText().toString();

您将通过这种方式获得正确的文本视图

您应该使用从参数中获得的视图:

TextView c=(TextView)视图.findViewById(R.id.text)

l2.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
TextView c=(TextView)view.findViewById(R.id.text);
字符串sel_item=c.getText().toString();
意向意向=新意向(SubCatListActivity.this,GridActivity.class);
adapter.imageLoader.clearCache();
意向。额外(“胆汁”,选择项目);
意向。额外(“cate”,cate);
星触觉(意向);
Toast.makeText(SubCatListActivity.this,sel_项,Toast.LENGTH_SHORT.show();
}});

请不要在标题中对我们大喊大叫。。。
(TextView) view.getText().toString();
  l2.setOnItemClickListener(new OnItemClickListener() {
 @Override
 public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    {

        TextView c = (TextView)view.findViewById(R.id.text);
        String sel_item = c.getText().toString();
        Intent intent = new Intent(SubCatListActivity.this,GridActivity.class);
         adapter.imageLoader.clearCache();
        intent.putExtra("gall", sel_item);
        intent.putExtra("cate", cate);
        startActivity(intent);
        Toast.makeText(SubCatListActivity.this,sel_item, Toast.LENGTH_SHORT).show();

     }});