Это может быть копия того же вопроса, что я спросил несколько дней назад: 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, только он дает другое изображение, но для всех видов списка. В классе Activity вы можете видеть, что условия каждого списка различны, т. Е. Намерение другой деятельности. Не могли бы вы выяснить, где проблема.
FYI, статус - статическая переменная, что означает, что это будет только один экземпляр для вашего класса. Итак, ваш TrainingAdapter.ViewHolder.status = 1; 1 для всех строк списка – Pankaj
Невозможно установить разные изображения в разных списках? – bShah