私はリストビューを持っていて、画像の数がカウントされたカム画像を表示しています。私のコードは次のようになります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;
}
アダプターのgetViewを表示する必要があります。 – Ronnie
アダプターを更新しました。今すぐ確認してください。 –