gpt4 book ai didi

android - 滚动后 gridview 单元格 View 位置发生变化 ...颜色设置为与单击单元格不同的单元格

转载 作者:行者123 更新时间:2023-11-29 21:48:52 24 4
gpt4 key购买 nike

我有一个包含 5 列的 girdview,我想为整行着色,这意味着单击时有 5 个单元格。单击效果很好,但是当我滚动它们时,单击颜色设置为两行或三行后面的单元格,因为它会更改 View 位置。

这是我的 GridView :

  <GridView
android:id="@+id/gridView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/CornflowerBlue"
android:gravity="center"
android:horizontalSpacing="5dp"
android:numColumns="5"
android:verticalSpacing="5dp">
</GridView>

具有自定义布局:

 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/LightBlue"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingLeft="6dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="22sp" />

以及我的 gridview 适配器代码:

    public class Fragment2 extends Fragment {
............................


gridView2 = (GridView) getView().findViewById(R.id.gridView2);
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(
getActivity(), R.layout.custom_layout, stg1); //stg1-array
gridView2.setAdapter(adapter2);
gridView2.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String message;

int p = (int) Math.ceil(position / 5) * 5; //to color 5 cells from starting on click

try{
gridView2.getChildAt(p).setBackgroundColor(Color.GREEN);
gridView2.getChildAt(p+1).setBackgroundColor(Color.GREEN);
gridView2.getChildAt(p+2).setBackgroundColor(Color.GREEN);
gridView2.getChildAt(p+3).setBackgroundColor(Color.GREEN);
gridView2.getChildAt(p+4).setBackgroundColor(Color.GREEN);



}
});

最初它工作正常但是在滚动颜色设置为不同的单元格而不是点击的单元格之后?我应该怎么办??我不想使用基本适配器....

最佳答案

试试这个,让我知道它是如何工作的。

public int p=-1;

/*
...OTHER STUFF...

*/

gridView2 = (GridView) getView().findViewById(R.id.gridView2);

ListAdapter<String> adapter2 = new ListAdapter<String>(
getActivity(), R.layout.custom_layout, stg1); //stg1-array
gridView2.setAdapter(adapter2);
gridView2.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String message;

int p = (int) Math.ceil(position / 5) * 5; //to color 5 cells from starting on click
}
});

/*
...OTHER STUFF...

*/

public class ListAdapter extends ArrayAdapter<String> {
private List<String> items;

public ListAdapter(Context context, int resource, List<Item> items) {
super(context, resource, items);
this.items = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

View v = convertView;

if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.custom_layout, null);
if(position==p) v.setBackgroundColor(Color.GREEN);
if(position==p+1) v.setBackgroundColor(Color.GREEN);
if(position==p+2) v.setBackgroundColor(Color.GREEN);
if(position==p+3) v.setBackgroundColor(Color.GREEN);
if(position==p+4) v.setBackgroundColor(Color.GREEN);
}

return v;

}
}

关于android - 滚动后 gridview 单元格 View 位置发生变化 ...颜色设置为与单击单元格不同的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com