-1

ListFragment の拡張機能を使用して、画面にデータを表示しています。onListItemClick 関数を使用してリスト項目のクリックを処理しようとしましたが、リスト要素をクリックしてもこの関数は呼び出されません。クリックしてもリスト要素が青くなりません。私のクリック感はないようです。これが私のコードです:

DataListFragment.java:

public class DataListFragment extends ListFragment {   
    private CustomArrayAdapter mAdapter;
    public void setAdapter(CustomArrayAdapter adapter) {
        this.mAdapter = adapter;
        setListAdapter(mAdapter);
    }
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setEmptyText("");
        mAdapter = new CustomArrayAdapter(getActivity());
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // I want this function to be called
        Log.i("DataListFragment", "Item clicked: " + id);
    }
}

single_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">    
        <TextView
            android:id="@+id/train_info"
            android:layout_width="270dp"
            android:layout_height="wrap_content" 
            android:singleLine="true"
            android:ellipsize="marquee" 
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true" 
            android:textSize="20sp"
            android:focusable="true" 
            android:textIsSelectable="true"
            android:focusableInTouchMode="true" 
            android:freezesText="true">
    </TextView>    
    <TextView
        android:id="@+id/time_info"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:textIsSelectable="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:freezesText="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:textSize="20sp" >
    </TextView>
</LinearLayout> 

(私のリストのすべての項目は2つのテキストビューで、1行です)

そして最後に CustomArrayAdapter.java:

public class CustomArrayAdapter extends ArrayAdapter<FinalData> {
    private final LayoutInflater mInflater;

    public CustomArrayAdapter(Context context) {
        super(context, android.R.layout.simple_list_item_2);
        mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public void setData(ArrayList<FinalData> data) {
        clear();
        if (data != null) {
            for (FinalData appEntry : data) {
                add(appEntry);
            }
        }
    }
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;

        if (convertView == null) {
            view = mInflater.inflate(R.layout.single_item, parent, false);
        } else {
            view = convertView;
        }

        FinalData item = getItem(position);
        ((TextView)view.findViewById(R.id.train_info)).setEllipsize(TruncateAt.MARQUEE);
        ((TextView)view.findViewById(R.id.train_info)).setSelected(true);
        ((TextView)view.findViewById(R.id.time_info)).setEllipsize(TruncateAt.MARQUEE);
        ((TextView)view.findViewById(R.id.time_info)).setSelected(true);
        ((TextView)view.findViewById(R.id.time_info)).setText(item.getFullData());
        ((TextView)view.findViewById(R.id.train_info)).setText(item.getTimeData());

        return view;
    }
} 

したがって、このコードは、必要な方法で必要なすべてのデータを表示しますが、クリックを感じません。リストの項目は触っても青くならない…

Android開発者ガイドの1つに従うだけです。フラグメント内に関数 onListItemClick がありますが、機能しません。なんで?

http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html

4

1 に答える 1

0

itemclicklistenerを使用する必要があります

そしてその書き込みで

parent.getItemAtPosition(position)

リストビューに使用した文字列の場合、上記のステートメントによって返されたこの値を文字列にキャストします。

お役に立てば幸いです。

于 2013-04-20T19:55:06.323 に答える