Android 如何将listview引入gridview
这是一个示例日历使用Android 如何将listview引入gridview,android,listview,gridview,Android,Listview,Gridview,这是一个示例日历使用gridview,现在我想在日历“day”中添加新内容,因此我想我可以在一天中的月份使用listview布局,现在我的问题是如何在gridvie适配器中使用listview 这是我的日历适配器部件代码 public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; TextView dayView; if
gridview
,现在我想在日历“day”中添加新内容,因此我想我可以在一天中的月份使用listview
布局,现在我的问题是如何在gridvie适配器中使用listview
这是我的日历适配器部件代码
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
TextView dayView;
if (convertView == null) { // if it's not recycled, initialize some attributes
LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.calendar_item, null);
}
dayView = (TextView)v.findViewById(R.id.date);
listitem=(ListView)v.findViewById(R.id.listView1);
// disable empty days from the beginning
if(days[position].equals("")) {
dayView.setClickable(false);
dayView.setFocusable(false);
}
else {
// mark current day as focused
if(month.get(Calendar.YEAR)== selectedDate.get(Calendar.YEAR) && month.get(Calendar.MONTH)== selectedDate.get(Calendar.MONTH) && days[position].equals(""+selectedDate.get(Calendar.DAY_OF_MONTH))) {
v.setBackgroundResource(R.drawable.item_background_focused);
}
else {
v.setBackgroundResource(R.drawable.list_item_background);
}
}
dayView.setText(days[position]);
for(int t=0;t<date.size();t++){
if(days[position]== date.get(t).get(2)){
listitem.setAdapter(new ArrayAdapter<String>(mContext,
android.R.layout.simple_list_item_1));
}
}
// create date string for comparison
String date = days[position];
if(date.length()==1) {
date = "0"+date;
}
String monthStr = ""+(month.get(Calendar.MONTH)+1);
if(monthStr.length()==1) {
monthStr = "0"+monthStr;
}
// show icon if date is not empty and it exists in the items array
// ImageView iw = (ImageView)v.findViewById(R.id.date_icon);
/* if(date.length()>0 && items!=null && items.contains(date)) {
iw.setVisibility(View.VISIBLE);
}
else {
iw.setVisibility(View.INVISIBLE);
}*/
return v;
}
public View getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
TextView dayView;
如果(convertView==null){//如果它没有被回收,初始化一些属性
LayoutInflater vi=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.布局.日历项,空);
}
dayView=(TextView)v.findViewById(R.id.date);
listitem=(ListView)v.findViewById(R.id.listView1);
//从开始禁用空日
如果(天[位置])。等于(“”){
dayView.setClickable(假);
dayView.setFocusable(假);
}
否则{
//将当前一天标记为焦点
如果(month.get(Calendar.YEAR)==selectedDate.get(Calendar.YEAR)和&month.get(Calendar.month)==selectedDate.get(Calendar.month)和&days[position]。等于(“+selectedDate.get(Calendar.DAY/u month))){
v、 挫折背景资源(R.drawable.item_background_focused);
}
否则{
v、 setBackgroundResource(R.drawable.list\u item\u background);
}
}
dayView.setText(天[位置]);
对于(int t=0;t0&&items!=null&&items.contains(date)){
iw.setVisibility(View.VISIBLE);
}
否则{
iw.setVisibility(视图不可见);
}*/
返回v;
}
嗯,我想应该没那么难吧
您不需要常规的gridview子级,而是需要使用listview膨胀xml。像这样,我想
LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (showListView)
v = vi.inflate(R.layout.listview_item, null);
else
v = vi.inflate(R.layout.calendar_item, null);
而不是像这样的事情
if(showListView){
ListView listview = (ListView) v.findViewById(R.id.listview);
listview.setAdapter(new SuperListviewAdapter());}
else{
//show regular item
}
return v;
我还没有尝试过这一点,但您可能会在触摸事件中遇到一些问题(比如gridview将使用listview触摸事件?)。我认为您不需要真正显示所有这些代码。显示
getView
中的较少代码,以及GridView
上的xml中的更多代码。listview进入girdview我完成了,但我还有一个问题,我无法联系我的listview滚动条,可能是在我点击listitem时停止GridView谢谢