当前位置: 首页 > 知识库问答 >
问题:

片段上的自定义listview-无法使用getActivity()

杭镜
2023-03-14

我正试图根据此答案在我的项目详细信息旁边添加删除按钮。我在一个新项目上试用过,效果非常好:

当我单击delete时,我将删除该项目。

不幸的是,当我的listView在calendar_选项卡中时,我试图在我自己的项目中使用它。xml。日历选项卡使用CompactCalendarTab。java-fragment类。所以Android Studio出错:E:\Downloads\MyCustomAdapter。JAVA

错误:(49,63)错误:找不到符号方法getSystemService(字符串)

我试图改变

LayoutInflater充气器=(LayoutInflater)上下文。getSystemService(上下文布局\充气机\服务);

LayoutInflater充气器=(LayoutInflater)getActive(). getSystemService(Context.LAYOUT_INFLATER_SERVICE);

但是没有运气。

定义列表视图。xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/list_item_string"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_alignParentLeft="true"
    android:paddingLeft="8dp"
    android:textSize="18sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/delete_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="5dp"
    android:text="Delete" />

日历选项卡。xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:id="@+id/calendar_tab"
android:layout_height="match_parent"
>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/toolbar_calendar"
    android:background="@color/teal_300"
    android:layout_alignParentTop="true"
    android:padding="10sp"
    android:layout_alignParentStart="true">

    <ImageButton
        android:id="@+id/back_button"
        android:src="@mipmap/ic_arrow_back_black_24dp"
        android:background="@null"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:onClick="goBackmain"
         />

<ImageButton
    android:id="@+id/next_button"
    android:src="@mipmap/ic_keyboard_arrow_left_black_24dp"
    android:background="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/showdate"
    android:layout_toStartOf="@+id/showdate" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:textSize="25sp"
    android:textStyle="bold"
    android:textColor="@color/black"
    android:id="@+id/showdate"
    android:layout_alignBaseline="@+id/prev_button"
    android:layout_alignBottom="@+id/prev_button"
    android:layout_centerHorizontal="true" />

<ImageButton
    android:id="@+id/prev_button"
    android:src="@mipmap/ic_keyboard_arrow_right_black_24dp"
    android:background="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/showdate"
    android:layout_toEndOf="@+id/showdate" />

    </RelativeLayout>

<com.github.sundeepk.compactcalendarview.CompactCalendarView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/compactcalendar_view"
    android:layout_width="fill_parent"
    android:layout_height="250dp"
    app:compactCalendarTargetHeight="250dp"
    app:compactCalendarTextSize="12sp"
    app:compactCalendarBackgroundColor="@null"
    app:compactCalendarTextColor="@color/blue_grey_700"
    app:compactCalendarCurrentSelectedDayBackgroundColor="@color/teal_300"
    app:compactCalendarCurrentDayBackgroundColor="@color/teal_600"
    app:compactCalendarCurrentDayIndicatorStyle="fill_large_indicator"
    app:compactCalendarEventIndicatorStyle="small_indicator"
    app:compactCalendarOtherMonthDaysTextColor="#534c4c"
    app:compactCalendarShouldSelectFirstDayOfMonthOnScroll="true"
    android:layout_below="@+id/toolbar_calendar"
    />


<ListView
    android:id="@+id/bookings_listview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/compactcalendar_view"
    >
</ListView>

我的片段:

  public class CompactCalendarTab extends Fragment {
 final ListView bookingsListView = (ListView) v.findViewById(R.id.bookings_listview);
    adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, mutableBookings);
    final ArrayList<String> list = new ArrayList<>();
    final MyCustomAdapter adapter = new MyCustomAdapter(list, this);
    bookingsListView.setAdapter(adapter);
    compactCalendarView = (CompactCalendarView) 
    v.findViewById(R.id.compactcalendar_view);
    }

我的自定义适配器:

public class MyCustomAdapter extends BaseAdapter implements ListAdapter {
private ArrayList<String> list = new ArrayList<String>();
private CompactCalendarTab context;



public MyCustomAdapter(ArrayList<String> list, CompactCalendarTab context) {
    this.list = list;
    this.context = context;
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int pos) {
    return list.get(pos);
}

@Override
public long getItemId(int pos) {
    return 0;
    //just return 0 if your list items do not have an Id variable.
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (view == null) {
        LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.custom_listview, null);
    }

    //Handle TextView and display string from your list
    TextView listItemText = (TextView)view.findViewById(R.id.list_item_string);
    listItemText.setText(list.get(position));

    //Handle buttons and add onClickListeners
    Button deleteBtn = (Button)view.findViewById(R.id.delete_btn);

    deleteBtn.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            //do something
            list.remove(position); //or some other task
            notifyDataSetChanged();
        }
    });

    return view;
}

}

共有1个答案

聂宜
2023-03-14

改变这条线

LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

对此

LayoutInflater inflater = LayoutInflater.from(parent.getContext());
 类似资料:
  • 我的代码有问题,我试图在我的片段上创建一个新的listview。我用的是自定义抽屉。 这是我的完整代码。 这是我的碎片布局计划 这就是catlog错误

  • 我试图在片段中创建自定义listView,我搜索了其他问题,但找不到任何东西。我的列表适配器是这样的 我的片段类是这样的: } 问题是这部分:CustomList adapter=新CustomList(tab1.this,string,imageId);构造函数(public CustomList(活动上下文,字符串[]web,整数[]imageId))只接受活动 我怎样才能解决这个问题?

  • 我正在尝试将ListView与fragmnet中的自定义适配器(baseAdapter)一起使用。 当我直接在MainActivity中使用此代码时,一切正常,但当我在片段中使用此代码时,它没有崩溃,但它没有显示任何内容,它只是一个空白片段。另外,当我尝试使用简单的arrayAdapter在片段中绑定一个textView时,它工作得很好,所以我认为问题将出现在我的自定义适配器中。 为什么不显示Li

  • 问题内容: 我浏览了教程并进行了搜索,但仍然不明白该怎么做, 当扩展在我的android应用程序中创建自定义listView 时,此方法有效。因此,我无法完全按照需要编辑“自定义”列表视图。 我需要知道何时调用此方法以及参数的含义。 如果有人可以解释以下方法很好。谢谢 问题答案: getView() :如规范中所述,getView方法将数据显示在指定位置。因此,当您设置适配器并滚动时,将调用lis

  • 我在修改我安装的WordPress流行帖子插件时遇到了一些问题。 它可以选择从自定义字段获取缩略图,我已将其输入为“image_facebook”。但是缩略图没有显示。 在检查代码时,我发现imgsrc有post id而不是返回图像URL。 我已经把问题缩小到我安装的另一个插件http://wordpress.org/plugins/advanced-custom-fields/ 当它处于活动状态

  • 在尝试为Sublime Text 2编写自己的片段时,我遇到了以下两个问题: > 查找作用域键。我发现我可以逐个查看我的包并找到对声明的“scope”属性的引用。例如,在(我的HTML包中的一个文件)中,有以下两行: 因此,如果我希望我当前的片段在javascript文件上工作,我将我的范围定义为: 我假设所有这些范围键都是根据我安装的软件包即时定义的。Sublime Text是否在我可以更容易引