我的应用程序中有一个视图,我必须在其中显示多个列表视图,每个列表视图都包含不同用户的数据。所以到目前为止我所做的是我有一个带有列的gridview,并且在每一列中我用一个listview 填充gridview 单元格。这很好用,但是,它两次显示相同的列表视图,而不是为每列显示不同的列表视图。奇怪的是,如果我用普通标签替换列表视图,它会显示来自不同用户的数据。
我设置gridview适配器的主要活动:
gridview.setNumColumns(10);
gridview.setHorizontalSpacing(205);
gridview.setStretchMode(0);
gridview.setAdapter(new Adapter_Labels_GridView_Calendar_dayview(mContext, Session_CurrentSession.current_CALENDAR));
这是 gridview 的适配器...只是 getview 部分。(您将看到我为显示相同列表视图而不是不同列表视图的列表视图设置适配器的地方)
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;
}
}
提前致谢
编辑:
这是主要活动中触摸事件的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 的 getview
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;
}
最后回答:
我发现了问题...我认为问题出在适配器上,因为我的视图很奇怪(gridview 中的 Listview)...但是,当使用 for 将数据读入 arraylist 时,我没有创建数据的新实例循环,因此字符串在内存中具有相同的引用。因此,在修改任何一个时,我实际上是在修改该对象的同一个实例。该死的,不敢相信我没有看到这么简单的小东西。感谢您的所有帮助。