15

タブ付きレイアウト(スワイプあり)を使用しています。ここには、SectionsPagerAdapter によって制御される 3 つのタブがあります。各タブは ListFragment です。

ここで、リスト内の項目の 1 つがクリックされたときに発生するイベントを取得したいと考えています。各タブのリスナーが欲しいです。

これが現在のコードです(これは機能していません。イベントは発生しません)。

public class NyhederFragment extends ListFragment {
     public static final String ARG_SECTION_NUMBER = "section_number";
     private static final String TAG="NyhederFragment";
     private List<Item> newsItems;
     private ArrayList newsHeadlines;
     private ArrayAdapter adapter;
     private BroadcastReceiver updateReciever;

public NyhederFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    ListView newsList = new ListView(getActivity());
    newsList.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    newsList.setId(R.id.list);
    DatabaseHelper dbConn = new DatabaseHelper(getActivity());

    newsItems = dbConn.getAllItemsFromNews();
    newsHeadlines = new ArrayList();
    for(Item i : newsItems){
        newsHeadlines.add(i.getTitle());
    }

    adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, newsHeadlines);

    setListAdapter(adapter);

    newsList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {
            Log.i("debug", "single click");
        }
    });

    dbConn.close();

    getActivity().registerReceiver(updateReciever, new IntentFilter("ArticlesUpdated"));
    return newsList;
}
}

それは何ですか、私は間違っていますか?

よろしくお願いします!

4

4 に答える 4

35

使用している場合ListFragmentは、単純にそのオーバーライド メソッドを使用できますonListItemClick()

@Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
    }
于 2012-12-29T09:34:28.730 に答える
15

カスタムリスト項目が原因です。デフォルトのフォーカスは、カスタム リスト アイテム (ボタン/テキストビュー) にあります。この問題が発生します。

android:descendantFocusability="blocksDescendants"リスト要素のルートレイアウトに追加してください。これが誰かを助けることを願っています。

于 2013-03-27T06:53:52.407 に答える
0

setListAdapter(adapter);に変更newsList.setAdapter(adapter);

于 2012-12-29T09:25:08.190 に答える