gpt4 book ai didi

android - fragment 类中 ArrayAdapter 的上下文

转载 作者:行者123 更新时间:2023-11-29 15:05:40 27 4
gpt4 key购买 nike

我正在尝试为 Android fragment 中的 listView 实现搜索栏。我让它在一个 Activity 中工作,但现在我需要让它在一个 fragment 中工作。这是我的代码:

public class AboFragment extends Fragment {

String [] items;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
ListView listView;
EditText editText;

public AboFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View v = inflater.inflate(R.layout.fragment_abo, container, false);
listView=(ListView)v.findViewById(R.id.listview);
editText=(EditText)v.findViewById(R.id.textsearch);
initList();
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().equals("")){
initList();
}
else{
searchItem(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {

}
});

Button dealerActivity = (Button) v.findViewById(R.id.button_dealer);
dealerActivity.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

Intent startDealer = new Intent(getActivity(), DealerActivity.class);
startActivity(startDealer);

}
});
return v;
}

public void initList(){
items = new String[]{"Canada", "China", "Japan", "USA"};
listItems = new ArrayList<>(Arrays.asList(items));
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.textitem, listItems);
listView.setAdapter(adapter);
}

public void searchItem(String textToSearch){
for(String item:items){
if(!item.contains(textToSearch)){
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}

问题出在 initList() 方法中,我正在尝试为我的数组列表初始化适配器,但我不确定如何修复它。它不接受“这个”。我也试过“getContext”但没有成功。错误消息是“无法解析构造函数”。如果我使用“getActivity”作为上下文运行应用程序,它不会崩溃,但搜索栏也不在那里。

最佳答案

It doesn't accept "this".

this 是一个FragmentFragment does not inherit from Context .

I also tried "getContext" with no success.

Fragment does not have a getContext() method .

使用 getActivity() 获取托管 Activity 的实例。 Activity 继承自 Context

but the search bar isn't there as well.

这是一些单独的问题,例如您的布局。它与您传递给 ArrayAdapter 构造函数的参数无关。

关于android - fragment 类中 ArrayAdapter 的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37766715/

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