Android 单击片段中listview的每一项都不起作用
我有一个listview,想在这个片段中的每个项目上设置一个onClickListener,但它不起作用。我还想在listview上设置一个contextMenu,但这也不起作用Android 单击片段中listview的每一项都不起作用,android,listview,android-fragments,Android,Listview,Android Fragments,我有一个listview,想在这个片段中的每个项目上设置一个onClickListener,但它不起作用。我还想在listview上设置一个contextMenu,但这也不起作用 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { purchasedItemsView = inflater.inflat
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
purchasedItemsView = inflater.inflate(R.layout.purchased_items_fragment , container, false);
db = new StoreDataBase(getActivity() , Consts.StoreDB.DB_NAME , Consts.StoreDB.DB_VERSION);
storeArrayList = new ArrayList<>();
listView = (ListView) purchasedItemsView.findViewById(R.id.storeListView);
adapter = new StoreListViewAdapter(getContext() , R.layout.store_item_row , storeArrayList);
listView.setAdapter(adapter);
adapter .notifyDataSetChanged();
registerForContextMenu(listView);
sendData(purchasedItemsView);
return purchasedItemsView;
}
private void sendData(View view){
Bundle bundle = getArguments();
if (bundle != null) {
final String[] names = bundle.getStringArray(Constc.Data.names);
listView = (ListView) view.findViewById(R.id.storeListView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("Data" , "clicked");
}
});
}else{
}
}
public View onCreateView(LayoutInflater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
purchasedItemsView=充气机。充气(R.layout.purchased\u items\u片段,容器,false);
db=新的StoreDataBase(getActivity(),Consts.StoreDB.db_名称,Consts.StoreDB.db_版本);
storeArrayList=新建ArrayList();
listView=(listView)PurchasedItemView.findViewById(R.id.storeListView);
adapter=new StoreListViewAdapter(getContext(),R.layout.store\u item\u行,storeArrayList);
setAdapter(适配器);
adapter.notifyDataSetChanged();
registerForContextMenu(列表视图);
sendData(PurchasedItemView);
返回PurchasedItemView;
}
私有void sendData(视图){
Bundle=getArguments();
if(bundle!=null){
最终字符串[]名称=bundle.getStringArray(Constc.Data.names);
listView=(listView)view.findViewById(R.id.storeListView);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Log.e(“数据”,“点击”);
}
});
}否则{
}
}
在onCreateView()中完成一次后,不要重新初始化listview
。因此,从sendData()
方法中删除这一行:
// remove this
listView = (ListView) view.findViewById(R.id.storeListView);
然后,您需要将这部分代码移到if
语句之外或onCreateView()方法内部
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("Data" , "clicked");
}
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Log.e(“数据”,“点击”);
}
});
第1点:
数组列表似乎为空,请填充一些数据
storeArrayList = new ArrayList<>();
//-------------------------------------
Bundle bundle = getArguments();
if (bundle != null) {
final String[] names = bundle.getStringArray(Constc.Data.names);
if(names != null && names.length() > 0) {
storeArrayList.addAll(names);
}
}
//-------------------------------------
listView = (ListView) purchasedItemsView.findViewById(R.id.storeListView);
adapter = new StoreListViewAdapter(getContext() , R.layout.store_item_row , storeArrayList);
listView.setAdapter(adapter);
第3点:
使用长时间单击侦听器显示上下文菜单
listView.setOnItemLongClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("Data" , "long press clicked");
//show dialog or context menu dialog.
}
});
listView.setOnItemLongClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
长单击(AdapterView父视图、视图视图、整型位置、长id){
Log.e(“数据”,“长按点击”);
//显示对话框或关联菜单对话框。
}
});
第4点:
注释sendData方法并直接使用onclick
//sendData(purchasedItemsView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("Data" , "clicked");
}
});
//发送数据(PurchasedItemView);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Log.e(“数据”,“点击”);
}
});
希望这有帮助。
如果你喜欢,请投赞成票
//sendData(purchasedItemsView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e("Data" , "clicked");
}
});