在列表视图中滚动时取消选择项目选择
Item selection was deselected while scrolling in listview
我想更改列表视图中 selected 项目的文本颜色。
主要
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub_alimentacao);
List<Tag> tags = getTagsSubAlimentacao();
final ListView listView = (ListView) findViewById(R.id.subAlimentacao);
listView.setAdapter(new TagSubAlimentacaoAdapter(this, tags));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, final int position, long id) {
TextView c = (TextView) view.findViewById(R.id.local);
LikeButton lk = (LikeButton) view.findViewById(R.id.gostei);
lk.setEnabled(false);
//OBTEM A COR EM INTEIRO E CONVERTE PARA HEXADECIMAL
Integer intColor = c.getCurrentTextColor();
String hexColor = "#" + Integer.toHexString(intColor).substring(2);
if (hexColor.equalsIgnoreCase("#2196F3")){
c.setTextColor(Color.parseColor("#aaaaaa"));
lk.setLiked(false);
}else{
c.setTextColor(Color.parseColor("#2196F3"));
lk.setEnabled(true);
lk.setLiked(true);
}
}
});
}
适配器
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Tag tag = tags.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layoute = inflater.inflate(R.layout.item_sub, null);
TextView titulo = (TextView) layoute.findViewById(R.id.local);
LikeButton lk = (LikeButton) layoute.findViewById(R.id.gostei);
titulo.setText(tag.getTitulo());
lk.setLiked(tag.getAtivo());
return layoute;
}
单击时它工作正常。颜色变了。但我有一个问题,即
例如,我在列表视图中有 10 个项目,起初只有 5 个项目可见(由于屏幕分辨率),如果我滚动我可以看到接下来的 5 个项目。
当我select前5个元素时,颜色发生变化。但是,如果滚动接下来的 5 个元素
前5个元素颜色恢复原状
使用 View Holder 模式...使用 根据您的要求进行更改。
在 ListView 中滚动时,它总是会设置适配器,因此您必须在适配器内部设置文本颜色,如果您更喜欢 ViewHolder 模式则更好
使用下面的内部适配器获取输出
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Tag tag = tags.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layoute = inflater.inflate(R.layout.item_sub, null);
TextView titulo = (TextView) layoute.findViewById(R.id.local);
LikeButton lk = (LikeButton) layoute.findViewById(R.id.gostei);
titulo.setText(tag.getTitulo());
boolean likeValue=tag.getAtivo();
if(likeValue){
titulo.setTextColor(Color.parseColor("#2196F3"));
}else{
titulo.setTextColor(Color.parseColor("#aaaaaa"));
}
lk.setLiked(likeValue);
return layoute;
}
我想更改列表视图中 selected 项目的文本颜色。
主要
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub_alimentacao);
List<Tag> tags = getTagsSubAlimentacao();
final ListView listView = (ListView) findViewById(R.id.subAlimentacao);
listView.setAdapter(new TagSubAlimentacaoAdapter(this, tags));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, final int position, long id) {
TextView c = (TextView) view.findViewById(R.id.local);
LikeButton lk = (LikeButton) view.findViewById(R.id.gostei);
lk.setEnabled(false);
//OBTEM A COR EM INTEIRO E CONVERTE PARA HEXADECIMAL
Integer intColor = c.getCurrentTextColor();
String hexColor = "#" + Integer.toHexString(intColor).substring(2);
if (hexColor.equalsIgnoreCase("#2196F3")){
c.setTextColor(Color.parseColor("#aaaaaa"));
lk.setLiked(false);
}else{
c.setTextColor(Color.parseColor("#2196F3"));
lk.setEnabled(true);
lk.setLiked(true);
}
}
});
}
适配器
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Tag tag = tags.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layoute = inflater.inflate(R.layout.item_sub, null);
TextView titulo = (TextView) layoute.findViewById(R.id.local);
LikeButton lk = (LikeButton) layoute.findViewById(R.id.gostei);
titulo.setText(tag.getTitulo());
lk.setLiked(tag.getAtivo());
return layoute;
}
单击时它工作正常。颜色变了。但我有一个问题,即
例如,我在列表视图中有 10 个项目,起初只有 5 个项目可见(由于屏幕分辨率),如果我滚动我可以看到接下来的 5 个项目。
当我select前5个元素时,颜色发生变化。但是,如果滚动接下来的 5 个元素
前5个元素颜色恢复原状
使用 View Holder 模式...使用
在 ListView 中滚动时,它总是会设置适配器,因此您必须在适配器内部设置文本颜色,如果您更喜欢 ViewHolder 模式则更好
使用下面的内部适配器获取输出
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Tag tag = tags.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layoute = inflater.inflate(R.layout.item_sub, null);
TextView titulo = (TextView) layoute.findViewById(R.id.local);
LikeButton lk = (LikeButton) layoute.findViewById(R.id.gostei);
titulo.setText(tag.getTitulo());
boolean likeValue=tag.getAtivo();
if(likeValue){
titulo.setTextColor(Color.parseColor("#2196F3"));
}else{
titulo.setTextColor(Color.parseColor("#aaaaaa"));
}
lk.setLiked(likeValue);
return layoute;
}