3

このフラグメントにはリストではない他のビューアイテムがあるため、アイテムをクリックしてもonListItemClickが呼び出されません。クラスはリストフラグメントではなくフラグメントを拡張します。クラスでonlistitemclickを実装するには、フラグメントを拡張しますか?

クラス

public class MainFiles extends Fragment 
{
    ArrayList<String> items;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
        View view = inflater.inflate(R.layout.files, container, false);

        Button button_up = (Button) view.findViewById(R.id.button_up);
        items = new ArrayList<String>();

        MyAdapter adapter = new MyAdapter(getActivity(), R.layout.row, items);
        ListView myList = (ListView) view.findViewById(R.id.list);
        myList.setAdapter(adapter);

        return view;
    }

    public void onListItemClick(ListView l, View v, int position, long id) 
    {

    }
}
4

4 に答える 4

4

を明示的に追加OnItemClickListenerしますListView

myList.setOnItemClickListener(this);

また、次のタイプをFragment実装していることを確認する必要があります。OnItemClickListener

public class MainFiles extends Fragment implements OnItemClickListener

もう 1 つの方法は、OnItemClickListenerに渡す専用のサブクラスを作成することListViewです。

myList.setOnItemClickListener(new MyOnItemClickListener());

/* ... */

private class MyOnItemClickListener implements OnItemClickListener {

    /* ... */

}
于 2012-12-10T23:33:57.357 に答える
2

このようにフラグメントでリスナーを実装しました

public class DetailsFragment extends Fragment implements OnItemClickListener {

    private ListView listView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_details, container, false);

        // list view
        listView = (ListView) root.findViewById(R.id.listView);
        listView.setListAdapter(new DetailsAdapter(getActivity(), list));
        listView.setOnItemClickListener(this);

        return root;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // handle click here
    }

}
于 2012-12-10T23:58:44.470 に答える
2

setOnItemClickListener を設定するのを忘れた

myList.setAdapter(adapter);これを追加した後:

myList.setOnItemClickListener(new OnItemClickListener(){
    public void onItemClick(AdapterView<?> parent, View view, int position,long id){
        new File(items.get(position));
        fileList(path.get(position));
        showPath(current_path);                 
    }
});
于 2012-12-10T23:35:45.843 に答える
0

フラグメントは ListFragment を拡張する必要があります。レイアウトに id=android:id/list のリストビューがある場合、レイアウトにはリスト以外のものを含めることができます

于 2014-02-06T17:40:42.833 に答える