我使用ListFragment的擴展來在屏幕上顯示一些數據。我嘗試通過onListItemClick函數來處理列表項的點擊,但是當我點擊list元素時,這個函數不會被調用。當我單擊時,列表元素甚至不會變藍。看起來它感覺不到我的點擊。這裏是我的代碼: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>
(我的列表中每一個項目是二textviews是一排)
而在上一次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開發人員指南之一。我在我的片段中有一個函數onListItemClick,但它不起作用。爲什麼?
http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html
你需要調用[setOnItemClickListener](http://developer.android.com/reference/android/widget/AdapterView.html#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener)) – adneal 2013-04-20 19:47:57
我應該在哪裏寫這個? – user1933770 2013-04-21 06:55:31