몇일 전에 내가 물었던 동일한 질문의 복사본이 될 수 있습니다. this. 거의 요구 사항을 충족시키지 만 전적으로 그렇지 않은 대답이 하나있었습니다. 나는 너희들의 관심을 끌기를 원하기 때문에 나는 이것을 다시 게시하고있다. 그 죄송합니다. 활동 클래스입니다.조건에 따라 ListView에서 이미지를 자동으로 변경하십시오.
try {
training.setTime(new SimpleDateFormat("MM-dd-yyyy HH:mm")
.parse(strDateTime));
long difference = training.getTimeInMillis()
- now.getTimeInMillis();
if (difference < 15 * 60 * 1000) { // less than 15 minutes
TrainingAdapter.ViewHolder.status = 1;
trainingAdapter.notifyDataSetChanged();
Intent intent = new Intent(getApplicationContext(),
TraineeListActivity.class);
MainActivity.this.startActivity(intent);
finish();
} else {
TrainingAdapter.ViewHolder.status = 1;
Toast.makeText(
getApplicationContext(),
"The training starts on" + " " + trainingStartDate
+ " at " + trainingStartTime,
Toast.LENGTH_SHORT).show();
}
} catch (java.text.ParseException e) {
e.printStackTrace();
}
어댑터 클래스에서; 여기
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
int tmp_status = 0;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.trainingadapter, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView
.findViewById(R.id.training_title);
holder.trainingDetails = (TextView) convertView
.findViewById(R.id.training_dtls);
holder.lockImage = (ImageView) convertView
.findViewById(R.id.lockImage);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
tmp_status = ViewHolder.status;
}
holder.txtName.setText(trainingsList.get(position).getTitle());
holder.trainingDetails.setText("In "
+ trainingsList.get(position).getLocation() + " on "
+ trainingsList.get(position).getDate() + " at "
+ trainingsList.get(position).getStartTime() + " - "
+ trainingsList.get(position).getEndTime() + " by "
+ trainingsList.get(position).getTrainer());
if (tmp_status == 0) {
System.out.println(tmp_status);
holder.lockImage.setBackgroundResource(R.drawable.unlock);
} else if (tmp_status == 1) {
System.out.println(tmp_status);
holder.lockImage.setBackgroundResource(R.drawable.lock);
}
return convertView;
}
static class ViewHolder {
TextView trainingDetails;
TextView txtName;
ImageView lockImage;
public static int status;
}
, 이미지는
INT의 tmp_status = 0의 값에 따라 변화한다;. 값을 1로 초기화하면 다른 이미지 만 제공되지만 모든 목록보기에는 표시됩니다. 활동 클래스에서 각 목록의 조건이 다른 즉 다른 활동의 의도를 볼 수 있습니다. 문제가 어디 있는지 알 수 있습니까?
참고로 상태는 정적 변수이므로 클래스에 대한 인스턴스가 하나만 존재한다는 것을 의미합니다. 귀하의 TrainingAdapter.ViewHolder.status = 1; listview의 모든 행에 대해 1입니다. – Pankaj
다른 listViews에서 다른 이미지를 설정할 수 있습니까? – bShah