2013-06-05 3 views
3

나는 listview를위한 lazyload 코드를하고 있는데, 나는 json에서 텍스트와 이미지 URL을 얻고 listview에 넣는다.게으른 로딩 onclick listview

이미지와 텍스트가 모두 원하는대로 표시됩니다.

내가 직면하고있는 문제는 목록이 아래쪽으로 스크롤되거나 뷰의 인덱스가 방해받는 경우입니다.

내 목록에 이미지가 가로로 미리보기되어있는 요소가 10 개 있다고 가정합니다. 처음에는 어떤 onclick 작업을 잘 작동하는 4 요소를 볼 수 있습니다. 하지만 내가 scrolldown 및 일곱 번째 ir 8th 요소를 클릭하면 색인 생성이 방해 받고 널 포인터 예외가 발생합니다.

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(); 

     }}); 

문제는 textview에있는 것으로 보이는데 목록의 onclick에서 원하는 텍스트를 가져올 수 없습니다.

6 번째 요소를 터치하면 7 번째 또는 8 번째 항목의 텍스트가 표시됩니다.

+0

제목에 우리를 소리 치지 마십시오. – WarrenFaith

답변

1

당신은

TextView c = (TextView) view.findViewById(R.id.text); 

에이 줄을 변경하여 시도하고 첫 번째 라인 View curr = parent.getChildAt((int) id);

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(); 

    }}); 
+0

thnx mate it worked – Wishy

1

onItemClick 방법을 사용하여 클릭 된 뷰에 전달을 제거 할 수 있습니다. 위의 코드에서 "view"라는 이름을가집니다. parent.getChildAt ((int) id) 올바른 뷰를 제공하지 않습니다.

1

봅니다 위치 사이에서 전환으로 텍스트 뷰의 텍스트를 얻을 :

: 당신이 바로 그 텍스트 뷰 당신이 매개 변수에서 얻을

1

당신은보기를 사용한다 이런 식으로 얻을 것이다

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

TextView c = (TextView) 보기 .findViewById (R.id.text);

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(); 

    }});