Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击片段中listview的每一项都不起作用_Android_Listview_Android Fragments - Fatal编程技术网

Android 单击片段中listview的每一项都不起作用

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

我有一个listview,想在这个片段中的每个项目上设置一个onClickListener,但它不起作用。我还想在listview上设置一个contextMenu,但这也不起作用

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");
    }
});