gpt4 book ai didi

android - Android 中带有 ListView 的 Gridview

转载 作者:行者123 更新时间:2023-11-30 03:49:02 25 4
gpt4 key购买 nike

我的应用程序中有一个 View ,我必须在其中并排显示多个 ListView ,每个 ListView 都包含不同用户的数据。所以到目前为止我所做的是我有一个带有列的 gridview,并且在每一列中我用一个 listview 填充 gridview 单元格。这工作正常,但是,它显示相同的 ListView 两次,而不是为每一列显示不同的 ListView 。奇怪的是,如果我用普通标签替换 ListView ,它会显示来自不同用户的数据。

设置 gridview 适配器的主要 Activity :

gridview.setNumColumns(10);
gridview.setHorizontalSpacing(205);
gridview.setStretchMode(0);
gridview.setAdapter(new Adapter_Labels_GridView_Calendar_dayview(mContext, Session_CurrentSession.current_CALENDAR));

这是 gridview 的适配器...只是 getview 部分。 (您会看到我在此处为显示相同 ListView 而不是不同 ListView 的 ListView 设置适配器)

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

ListView list;

if (convertView == null)
{
// if it's not recycled, initialize some attributes
list = new ListView(mContext);
list.setLayoutParams(new GridView.LayoutParams(150, 500));
list.setPadding(2,2,2,2);
}
else
{
list = (ListView) convertView;
}


list.setAdapter(new Adapter_ListView_GridView_Calendar(mContext, dagtyeVanhaarkappers.get(position), gebookdeurUser.get(position), tekening.get(position)));
list.setCacheColorHint(0);

list.setId(position);

list.setOnTouchListener(new View.OnTouchListener()
{

public boolean onTouch(View v, MotionEvent event)
{
// Disallow the touch request for parent scroll on touch of child view
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});

return list;
}

}

提前致谢

编辑:

这是主 Activity 中触摸事件的 gridview:

  gridview.setOnTouchListener(new View.OnTouchListener()
{

public boolean onTouch(View v, MotionEvent event)
{
if(isDayView && created)
{
int numchilds = gridview.getChildCount();
for(int i = 0; i < numchilds; i++)
{
gridview.getChildAt(i).getParent().requestDisallowInterceptTouchEvent(false);

}
}
return false;
}
});

编辑:获取 Adapter_ListView_GridView_Calendar 的 View

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

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row_bookingslist, parent , false);

ImageView booking_image = (ImageView) rowView.findViewById(R.id.booking_image);
TextView textBookingTime = (TextView) rowView.findViewById(R.id.booking_time);
TextView textBookingUser = (TextView) rowView.findViewById(R.id.booking_byuser);

booking_image.setImageDrawable(drawables.get(position));
textBookingTime.setText(daytimes.get(position));
textBookingUser.setText(bookedbyuser.get(position));


return rowView;
}

最后回答:

我发现了问题...我认为问题出在适配器上,因为我的 View 很奇怪(Gridview 中的 Listview)...但是,在将数据读入 arraylist 时我没有创建数据的新实例使用 for 循环,因此字符串在内存中具有相同的引用。因此,当修改其中任何一个时,我实际上是在修改该对象的同一个实例。该死的,不敢相信我没有看到这么简单的小东西。感谢您提供的所有帮助。

最佳答案

final View rowView = inflater.inflate(R.layout.list_mobile, parent, false);
ListView listView = (ListView) rowView.findViewById(R.id.raw_mylist);

listView.setAdapter(adapter);

// PARENT
mListView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Log.v("PARENT", "PARENT TOUCH");
rowView.findViewById(R.id.raw_mylist).getParent()
.requestDisallowInterceptTouchEvent(false);
return false;
}
});

//your grid view as child
listView.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
Log.v("CHILD", "CHILD TOUCH");
// Disallow the touch request for parent scroll on touch of
// child view
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});

在主适配器的 getview 方法中。

关于android - Android 中带有 ListView 的 Gridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14453311/

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