【发布时间】:2014-02-17 12:10:21
【问题描述】:
这可能是我几天前提出的同一个问题的副本: this。我在那里收到了一个几乎满足我要求但不完全满足的答案。我再次发布此内容是因为我想引起你们的注意。对此感到抱歉。 在 Activity 类中。
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 类中,您可以看到每个列表的条件不同,即对另一个活动的意图。你能找出问题出在哪里吗?
【问题讨论】:
-
仅供参考,status 是静态变量,这意味着它只是您班级的一个实例。所以你的 TrainingAdapter.ViewHolder.status = 1;列表视图的所有行都为 1
-
不可以在不同的listViews中设置不同的图片吗??
标签: android listview conditional-statements baseadapter