2011-08-31 13 views
0

私はリストビューを持っていて、画像の数がカウントされたカム画像を表示しています。私のコードは次のようになりますAndroid:リストビューの画像の可視性を設定する

私の問題は、リストがロードされているときに、細かいことがあり、カウントがゼロより大きいときにイメージが表示されることです。今度は、スクロールバーを作成するまで、リストビューに要素を追加し続けました。今問題が始まる

スクロールアップすると、リスト要素の一部が予想される動作の後ろに表示されます。私が下にスクロールすると、以前に表示されていたにもかかわらずカムイメージが消えてしまいます。リスト内の非常に特異な振る舞い。私はここで何をすべきか?誰かが私を助けることができますか?

お時間をありがとうございます。

私のアダプタ

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で見つかりました。シンプルな私は再び私はsetvisibilityメソッドを使用して非表示になって表示する必要があります。

1

は、APIを膨らませるために、親PARAMTERにnullを渡します。

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

私はスクロールビューのキャッシュを無効にしていました:) –

+0

これは役に立ちましたか? – Ronnie

+0

ああ申し訳ありませんがしばらく働いていて、うまくいきませんでした。私は以前リストビューのアンドロイドを設定しました:scrollingCache = "false"そしてそれはしばらくの間働いて、再び働かないでください。あなたの方法も助けていない:(とても悲しい –

関連する問題