我创建了一个自定义列表视图,在每行的左侧有两个箭头(向上/向下投票)。使用选择器,我已经能够更改箭头的图像(颜色)并相应地更新投票。我的问题是,例如,如果我单击“投票”,则当我向下滚动足够远以使我投票过的列表项退出屏幕时,它将重置为原始未选中状态/图像。
这是我的获取视图方法
public View getView(final int position, View convertView, ViewGroup parent)
{
//creating the ViewHolder we defined earlier.
final ViewHolder holder = new ViewHolder();
//creating LayoutInflator for inflating the row layout.
LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//inflating the row layout we defined earlier.
convertView = inflator.inflate(R.layout.partylist, null);
//setting the views into the ViewHolder.
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.voteUp = (ImageView) convertView.findViewById(R.id.vote_up_image);
holder.voteUp.setTag(position);
holder.voteDown = (ImageView) convertView.findViewById(R.id.vote_down_image);
holder.voteDown.setTag(position);
holder.votes = (TextView) convertView.findViewById(R.id.votes);
//define an onClickListener for the ImageView.
holder.voteUp.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if (v.isSelected()){
v.setSelected(false);
holder.votes.setText(String.valueOf((list.get(position).votes)));
} else {
if (holder.voteDown.isSelected()){
v.setSelected(true);
holder.voteDown.setSelected(false);
holder.votes.setText(String.valueOf((list.get(position).votes+1)));
}else{
v.setSelected(true);
}
}
//Toast.makeText(PartyActivity.this, "Image from row " + position + " was pressed " + list.get(position).title, Toast.LENGTH_LONG).show();
}
});
holder.voteDown.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View w)
{
if (w.isSelected()){
w.setSelected(false);
holder.votes.setText(String.valueOf((list.get(position).votes)));
} else {
if (holder.voteUp.isSelected()){
w.setSelected(true);
holder.voteUp.setSelected(false);
holder.votes.setText(String.valueOf((list.get(position).votes-1)));
}else{
w.setSelected(true);
}
}
//Toast.makeText(PartyActivity.this, "Image from row " + position + " was pressed " + list.get(position).title, Toast.LENGTH_LONG).show();
}
});
//setting data into the the ViewHolder.
holder.title.setText(list.get(position).title);
holder.votes.setText(String.valueOf(list.get(position).votes));
//return the row view.
return convertView;
}
}
所以我自己弄清楚了。这是由于对教程的深刻理解造成的。
我将一个对象传递给我的自定义适配器,我要做的就是在该对象内创建一些布尔变量,以存储是否在每一行上选中了复选框/选择器,然后在单击图像时适当地设置了这些变量。
这是我需要帮助的任何人的新getview()
public View getView(final int position, View convertView, ViewGroup parent)
{
//creating the ViewHolder we defined earlier.
final ViewHolder holder = new ViewHolder();
//creating LayoutInflator for inflating the row layout.
LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//inflating the row layout we defined earlier.
convertView = inflator.inflate(R.layout.partylist, null);
//setting the views into the ViewHolder.
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.voteUp = (CheckBox) convertView.findViewById(R.id.vote_up_image);
holder.voteUp.setTag(position);
holder.voteDown = (CheckBox) convertView.findViewById(R.id.vote_down_image);
holder.voteDown.setTag(position);
holder.votes = (TextView) convertView.findViewById(R.id.votes);
//define an onClickListener for the ImageView.
holder.voteUp.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (holder.voteUp.isSelected()){
holder.voteUp.setSelected(false);
list.get(position).Up=false;
holder.votes.setText(String.valueOf((list.get(position).votes)));
} else {
if (holder.voteDown.isSelected()){
holder.voteUp.setSelected(true);
holder.voteDown.setSelected(false);
list.get(position).Up=true;
list.get(position).Down=false;
holder.votes.setText(String.valueOf((list.get(position).votes+1)));
}else{
holder.voteUp.setSelected(true);
list.get(position).Up=true;
holder.votes.setText(String.valueOf((list.get(position).votes+1)));
}
}}
});
holder.voteDown.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{// Toast.makeText(PartyActivity.this, "Image from row " + position + " was pressed " + list.get(position).title, Toast.LENGTH_LONG).show();
if (holder.voteDown.isSelected()){
holder.voteDown.setSelected(false);
list.get(position).Down=false;
holder.votes.setText(String.valueOf((list.get(position).votes)));
} else {
if (holder.voteUp.isSelected()){
holder.voteDown.setSelected(true);
holder.voteUp.setSelected(false);
list.get(position).Down=true;
list.get(position).Up=false;
holder.votes.setText(String.valueOf((list.get(position).votes-1)));
}else{
holder.voteDown.setSelected(true);
list.get(position).Down=true;
holder.votes.setText(String.valueOf((list.get(position).votes-1)));
}
}}
});
//setting data into the the ViewHolder.
holder.title.setText(list.get(position).title);
holder.votes.setText(String.valueOf(list.get(position).votes));
holder.voteUp.setChecked(list.get(position).Up);
holder.voteDown.setChecked(list.get(position).Down);
//return the row view.
return convertView;
}
我有一个JTable,在一列中,我为每行都有一个JComboBox。我在按下按钮时动态添加行。在组合框中所做的选择将确定对该特定行执行的计算。为了参数起见,假设组合框的选项是:选项1,选项2,选项3和选项4。 我遇到的问题如下: 假设我添加了2行,并从第1行的组合框中选择任何选项,当我去第2行的组合框中进行选择时,勾选与第1行相同的选择。似乎有某种记忆。如何禁用此功能,以便默认选择始终为-1(即非
问题内容: 我正在开发一个需要屏幕DPI的应用程序。我检查了几个论坛,并获得了一个代码段,内容如下: 但是无论我的屏幕分辨率值是多少,该值都保持不变,为96。代码有什么问题? 对于同一件事,我得到了另一个代码,如下所示: 但是再一次,无论我的屏幕分辨率如何,返回的值都是相同的96。怎么了?我的代码是错误的还是我以错误的方式解释了它? 问题答案: 问题是没有人知道操作系统的确切物理尺寸,甚至连操作系
问题内容: 我想知道是否可以使用tkinter计算屏幕尺寸。 我想要这样做,这样可以使程序在屏幕中央打开。 问题答案:
我想处理一个选择菜单的测试场景,其中 spec 将选择一个随机选项,而不是当前选择的选项。我似乎找不到一个有效的定位器或方法可以让我做到这一点。 策略1:获取的当前索引,并从其他索引中随机选择 策略2:获取-获取数组的长度并选择随机数组。此选择器似乎忽略了部分,并返回选项总数 由于我对量角器很陌生,我真的没有看到一种方法来查看API。请问有什么提示吗?
问题内容: 我将selenium1的代码转换为selenium2,找不到在下拉菜单中选择标签或获得下拉菜单的选定值的简便方法。您知道在Selenium 2中如何做吗? 这是两个在Selenium 1中起作用但不在2中起作用的语句: 问题答案: 查看硒文档中有关使用webdriver 填写表单的部分以及Select类的javadoc 。 要基于标签选择一个选项: 要获得第一个选定的值:
问题内容: 我想知道是否有一种方法比使用然后将其用作JFrame的尺寸然后将JFrame设置为更好?Java中是否会有某种预构建的功能来控制图形卡以实现真正的全屏显示? 问题答案: 您正在追求所谓的“全屏独家模式” 请查看全屏独占模式以了解更多详细信息。 但是请理解,它在Swing中不能很好地发挥作用。 在Mac OS X 10.7下,您可以使用来访问它为应用程序提供的全屏支持 。 查看OSX L