我有一个Gridview,当我按下某个元素时,我想绘制背景。
我有一个适配器来动态加载gridview元素。我在适配器上有一个侦听器。在这个侦听器上,我用我想要的颜色放置背景,但它也会在列表中绘制另一个元素(我猜是在视图重新加载后,位置相同的元素)。
重要提示:我的最小API是9,我无法真正更改它。
以下是我的 getView 方法的代码(来自适配器):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder = null;
if (convertView == null) {
viewHolder=new ViewHolder();
LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view=layoutInflater.inflate(R.layout.highwayappselectionitem,parent, false);
viewHolder.appImageIcon=(ImageView) view.findViewById(R.id.highwayGridViewItemIcon);
viewHolder.appNameLabel=(TextView) view.findViewById(R.id.highwayGridViewItemName);
viewHolder.appInfoButton = (ImageView) view.findViewById(R.id.highwayGridViewItemInfoButton);
viewHolder.linearLayout = (LinearLayout) view.findViewById(R.id.HighwayGridViewItem);
}else{
view= convertView;
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.appNameLabel.setText(appsList.get(position).getAppName());
viewHolder.appImageIcon.setImageDrawable(appsList.get(position).getImageIcon());
view.setTag(viewHolder);
viewHolder.linearLayout.setOnClickListener(new MyOnClickListener(position,0));
return view;
}
下面是线性布局的侦听器(表示每个项目):
public void onClick(View v) {
if(selectedView==0 || selectedView==1){
appName=appsList.get(position).getAppName();
filePath=appsList.get(position).getFilePath();
appLogo=appsList.get(position).getImageIcon();
v.setBackgroundColor(activity.getResources().getColor(R.color.light_grey));
System.out.println("Just pressed the app ... "+appName);
System.out.println("His filePath is ... "+filePath);
HighwayGridViewAppItem tmpSelectedItem= new HighwayGridViewAppItem(appLogo, appName, filePath);
selectedAppsList.add(tmpSelectedItem);
System.out.println("AppSelectionCUstomAdapter : Added a new application to the list of selected apps .!!!!!!!!!!!!!!!.........");
System.out.println("AppselectioncustomAdaptaer : The size of the selectedAppsList is now : "+selectedAppsList.size());
}else{
//pressed the info button
System.out.println("This will be implemented later, need access to the webservices");
}
}
}
忽略if(所选视图==0或==1如果不再使用,我可以删除它...).
此外,应用程序列表是我自定义项目类的列表。在那里,我有一个布尔属性来表示它是否被选中。
正在发生的是,想象一下这个网格视图:
断续器
欧洲发展基金
高 H I
J K L公司
灰色线代表滚动……如果滚动,则会显示新元素。如果我按B,它会选择B,但也会选择H。
我试着做研究,但我发现的问题不一样。
可能会有所帮助。网格视图用于添加重复的元素,因此当我将元素添加到网格视图时,我会检查元素列表是否已经具有类似的元素,如果是这样,我不添加它。
当您想在选择后保留选定的某些网格视图项目时,您需要添加此行。
((BaseAdapter) gridView.getAdapter()).notifyDataSetChanged();
编辑 我认为getView方法中存在问题,这就是为什么您获得重复值的原因:
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view== null) { // if it's not recycled, initialize some attributes
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
view = inflater.inflate(R.layout.highwayappselectionitem, parent, false);
}
}
我使用gridview在我的gridview中选择多个项目(图像)。 我使用< code > MultiChoiceModeListener 来实现这一点,问题是选中的项目没有突出显示 选择器xml: 当我触摸一个项目时,它被蓝色覆盖(我认为这是因为我使用了< code > GridView . setdrawselectorontop(true);)...我一抬起手指,蓝色就消失了。 我希望选择
问题内容: 我找不到能帮助我解决Angular中这个简单问题的东西。与位置路径进行比较时,所有答案都与导航栏相关。 我使用list和构建了一个动态表。当我单击一行时,我试图为该行分配一个css类(选中),以突出显示该行已被用户选中的事实,并从先前突出显示的行中删除了该行。 我缺少在选定的行和CSS类分配之间进行绑定的方法。 我在每个()上应用了代码, 但我缺少应用更改的逻辑。 我的代码-Plunk
实际行为 预期行为 至于我使用的代码,主加载了一个,其中调度页是真正的罪魁祸首,扩展了Xamarin.Forms.TabbedPage。SelectedPage被正确设置(加载正确的contentpage),但选项卡没有突出显示。 null
我有一个从内部存储器加载图像的回收器视图。我想在单击时突出显示所选项。我试了很多方法,但都不起作用。实际上,我需要的是,当我在Recycler视图中单击任何项目时,该项目必须进入我的ArrayList,它也应该突出显示,当我单击或说unselect时,它必须再次变为正常。以下是我的代码: 这是我的适配器类:
我一直在制作一个可以在Android中使用ListView的应用程序,但我无法使所选(chacked)项具有不同的背景。我用的是CHOICE_MODE_SINGLE。到目前为止,我的代码是这样的: 我使用的列表视图: (inside layout.xml) 我在适配器中使用的TextView布局: (listItem.xml) 这是我添加适配器的地方: 我确信在单击时选中了正确的项,因为当我调用g
问题内容: 每当单元格的内容与用户的输入匹配时,我都希望突出显示JTable中的特定行。以下代码是我到目前为止可以使用的代码: 注意:是在源文件中全局作用域。 现在,此操作在某种程度上可行,但是我将其添加到内的。JTables是在程序运行时动态创建的。但是,该方法会使所有已创建的JTables中的所有特定单元格突出显示。 如何在所有JTable中保留单元格以保留其特定的突出显示单元,而不是让所有J