2011-08-31 7 views
0

나는 목록보기를 사용하고 있으며 이미지 개수가 많은 캠 이미지를 표시하고 있습니다. 내 코드는 다음과 같습니다.Android : 목록보기 문제의 이미지 가시성 설정

  TextView imageCountview = (TextView) row.findViewById(R.id.TextViewImageCount); ; 
      //checking whether count is zero, if so hiding both image and count 
      if(ImageCount.equals("0")){ 
       imageCountview.setVisibility(8); 
       ImageView camimage = (ImageView) row.findViewById(R.id.imageViewlistcam); 
       camimage.setVisibility(8); 
      } 
      else{ 
       imageCountview.setText(ImageCount); 
      } 

이제 목록이로드되면 모든 문제가 해결되며 개수가 0보다 큰 경우 이미지가 표시됩니다. 이제는 스크롤 막대를 만들 때까지 계속 목록보기에 더 많은 요소를 추가했습니다. 문제가 지금 시작됩니다

위로 스크롤하면 목록 요소의 일부가 예상되는 동작 뒤에 화면으로 표시됩니다. 아래로 스크롤하면 캠 이미지가 이전에 표시되었지만 사라집니다. 목록에서 매우 특이한 행동입니다. 나는 여기서 무엇을 missign합니까? 누군가 나를 도울 수 있습니까?

미리 감사드립니다. 부모 있었던 파라미터에

내 어댑터

class MyIncidentAdapter extends ArrayAdapter{ 

     public MyIncidentAdapter(Context context, int textViewResourceId, 
       ArrayList<String> dbResults) { 
      super(context, textViewResourceId, dbResults); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View row = convertView; 
      if (row == null) { 
       LayoutInflater inflater = getLayoutInflater(); 
       row = inflater.inflate(R.layout.row_incident, parent, false); 
      } 

      TextView incidentID = (TextView) row.findViewById(R.id.label_incident); 
      incidentID.setText((db_results.get(position)).toString()); 

      String Final = null; 
      String ImageCount = "0"; 
      String VideoCount = "0"; 
      String RecordingCount="0"; 
      //getting image count 
      SQLiteDatabase db10; 
      db10 = openOrCreateDatabase("filestore", MODE_PRIVATE, null); 
      Cursor cursor = db10.rawQuery(
        "SELECT count(urls) as numbers FROM files where incident_id='"+((db_results.get(position)).toString())+"'", null); 
      while (cursor.moveToNext()) { 
       ImageCount = String.valueOf(cursor.getString(cursor 
         .getColumnIndex("numbers"))); 
      } 
      cursor.close(); 

      //getting video 
      Cursor cursor1 = db10.rawQuery(
        "SELECT count(urls) as numbers FROM videos where incident_id='"+((db_results.get(position)).toString())+"'", null); 
      while (cursor1.moveToNext()) { 
       VideoCount = String.valueOf(cursor1.getString(cursor1 
         .getColumnIndex("numbers"))); 
      } 
      cursor1.close(); 

      //getting audio count 
      Cursor cursor11 = db10.rawQuery(
        "SELECT count(urls) as numbers FROM audios where incident_id='"+((db_results.get(position)).toString())+"'", null); 
      while (cursor11.moveToNext()) { 
       RecordingCount = String.valueOf(cursor11.getString(cursor11 
         .getColumnIndex("numbers"))); 
      } 
      cursor11.close(); 



      //Final = "Image:"+ImageCount+ "  Video:"+VideoCount+ "  Audio:"+RecordingCount; 
      //TextView countinfo = (TextView) row.findViewById(R.id.textViewCount); 
      //countinfo.setText(Final); 

      TextView imageCountview = (TextView) row.findViewById(R.id.TextViewImageCount); ; 
      //checking whether count is zero, if so hiding both image and count 
      if(ImageCount.equals("0")){ 
       imageCountview.setVisibility(8); 
       ImageView camimage = (ImageView) row.findViewById(R.id.imageViewlistcam); 
       camimage.setVisibility(8); 
      } 
      else{ 
       imageCountview.setText(ImageCount); 
      } 


      TextView videoCountview = (TextView) row.findViewById(R.id.textViewVideoCount); 
      if(VideoCount.equals("0")){ 
       videoCountview.setVisibility(8); 
       ImageView imgvid = (ImageView)row.findViewById(R.id.imageViewlistvid); 
       imgvid.setVisibility(8); 
      } 
      else{ 
       videoCountview.setText(VideoCount); 
      } 


      TextView audioCountview = (TextView) row.findViewById(R.id.textViewAudioCount); 
      if(RecordingCount.equals("0")){ 
       audioCountview.setVisibility(8); 
       ImageView audioimg = (ImageView)row.findViewById(R.id.imageViewlistaud); 
       audioimg.setVisibility(8); 
      } 
      else{ 
       audioCountview.setText(RecordingCount); 
      } 

      String InsDate=null; 
      Cursor cursor111 = db10.rawQuery(
        "SELECT incident_date FROM incident where incident_id='"+((db_results.get(position)).toString())+"'", null); 
      while (cursor111.moveToNext()) { 
       InsDate = String.valueOf(cursor111.getString(cursor111 
         .getColumnIndex("incident_date"))); 
      } 
      cursor111.close(); 

      TextView incidentDate = (TextView) row.findViewById(R.id.label_date); 
      incidentDate.setText(InsDate); 

      Cursor cursor1111 = db10.rawQuery(
        "SELECT description FROM incident where incident_id='"+((db_results.get(position)).toString())+"'", null); 
      while (cursor1111.moveToNext()) { 
       description = String.valueOf(cursor1111.getString(cursor1111 
         .getColumnIndex("description"))); 
      } 
      cursor1111.close(); 
      db10.close(); 
      TextView incidentDesc = (TextView) row.findViewById(R.id.label_des); 


      if(description.equals(" ")){ 
       incidentDesc.setVisibility(8); 
      } 
      else{ 
       incidentDesc.setText(description.trim()); 
      } 



      return row; 
     } 
+0

은 어댑터의 getView를 볼 필요가 있습니다. – Ronnie

+0

어댑터를 업데이트했습니다. 지금 확인하십시오. –

답변

0

이 답변으로 발견 된 quesiton. 간단한 내가 다시 setvibility 메서드를 사용하여 숨어있는 wot 표시해야합니다.

1

패스 null는 API를 팽창합니다.

row = inflater.inflate(R.layout.row_incident, null, false); 
+0

scrollview 캐시가 비활성화되어 작동했습니다. –

+0

도움이 되셨습니까? .. 어떻게 그랬습니까? – Ronnie

+0

오, 죄송합니다. 잠시 동안 작동하고 작동하지 않았습니다. 이전에 listview의 android : scrollingCache = "false"를 설정하고 잠시 동안 작동하고 다시 작업하지 않았습니다. 귀하의 방법도 도와주지 :(너무 슬픈 –