我有自定义基地适配器
。我在我的网格视图
中使用的。我试图按位置更改项目背景颜色(也更改Textview的文本颜色)这是我的基本适配器
源
public class ServiciesGridAdapter extends BaseAdapter {
private Context context;
private List<ServicesListItem> itemList;
public ServiciesGridAdapter(Context context, List<ServicesListItem> mobileValues) {
this.context = context;
this.itemList = mobileValues;
}
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
gridView = inflater.inflate(R.layout.view_servisies_gridview_items, null);
final LinearLayout mainLayout = (LinearLayout) gridView.findViewById(R.id.gridview_items_layout);
final TextView serviciesID = (TextView) gridView.findViewById(R.id.servicies_grid_id);
final TextView serviciesName = (TextView) gridView.findViewById(R.id.servicies_grid_name);
serviciesID.setText(itemList.get(position).getName());
serviciesName.setText(itemList.get(position).getIdentifier() + " EUR");
mainLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainLayout.setBackgroundResource(R.drawable.rounded_corners_blue);
serviciesID.setTextColor(Color.parseColor("#ffffff"));
serviciesName.setTextColor(Color.parseColor("#ffffff"));
}
});
} else {
gridView = (View) convertView;
}
return gridView;
}
@Override
public int getCount() {
return itemList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
当我在项目点击中运行我的应用程序时,我可以更改背景颜色,但当我选中另一个项目时,第一个项目的背景是相同的。简单地说,我只想在每次单击时更改一个项目的背景。
我怎样才能解决我的问题?
使用列表选择器按网格视图中的位置更改项目背景。
添加颜色你的颜色.xml
<resources>
<color name="onClickColor">#FFFFFF</color>
</resources>
将selecter.xml
添加到可绘制
文件夹
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@color/onClickColor">
</item>
</selector>
将listSelector
添加到您的GridView
<GridView
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/selecter">
</GridView>
看看这篇文章。。。
您必须重置所有其他视图文本颜色和背景,因此进行循环并执行此操作。尝试以下代码
mainLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i=0;i<parent.getChildCount();i++){
View c = parent.getChildAt(i);
c.findViewById(R.id.gridview_items_layout).setBackgroundResource(defaultResource);
(TextView) c.findViewById(R.id.servicies_grid_id).setTextColor(defaultColor);
((TextView) c.findViewById(R.id.servicies_grid_name)).setTextColor(defaultColor);
}
mainLayout.setBackgroundResource(R.drawable.rounded_corners_blue);
serviciesID.setTextColor(Color.parseColor("#ffffff"));
serviciesName.setTextColor(Color.parseColor("#ffffff"));
}
});
我想更改我的Android项目的设置,这样源代码就不会从[project_name]/app/src中获取,而是可以将其设置为从外部文件夹中获取。 项目结构原因是我想要共享我的src文件夹,所以我想在我的本地计算机上的Dropbox文件夹下定位。 有没有办法在Android Studio改变一个Android项目的SRC文件夹的路径?(在《月蚀》中,这是可能的) 以下是在Eclipse中如何完成的
我想改变Long Press上Card View的背景,我访问了这么多论坛,但没有人给出正确的答案。 那么,如何改变列表/卡片/回收器视图的背景,就像长按导航视图项目一样??
我有一个清单,我在回收商的视图中展示了这一点 一些项目有蓝色背景和其他项目有灰色背景 我想编辑所选项目背景(所选项目表示已单击的项目) 这是我的适配器类
我想设置网格视图的自定义背景,但是当网格加载时,网格背景的第一个项目没有加载,并且其余所有项目都正确加载。以下是我的代码,所以请帮忙。 这是我的适配器类。 这是适配器的 xml。 实际上,我用毕加索图书馆从互联网上下载照片。我已经为网格视图的每一项创建了自定义背景,但当网格视图首先加载时,只有网格的第一项(网格的零位置)不工作,网格视图的所有背景项都设置正确。
在这里我有项目的列表在回收器视图这是取自Firebase.所以我试图改变其背景颜色当用户点击它.但是当我点击项目1然后项目4背景颜色也得到改变.如果点击项目2然后项目8颜色也.它给不恰当的结果。 视图持有者类
下面的修复你的位置->理解位置符号一节也解释了这些图标。 正如你所看到的,它不是标记,它是一个位置按钮,正如我所写的,所以我的问题是我如何才能改变图标(位置按钮)到我想要的图标。