2013-04-20 64 views
-1

我使用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

+0

你需要調用[setOnItemClickListener](http://developer.android.com/reference/android/widget/AdapterView.html#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener)) – adneal 2013-04-20 19:47:57

+0

我應該在哪裏寫這個? – user1933770 2013-04-21 06:55:31

回答

0

你需要使用 itemclicklistener

,並在寫

parent.getItemAtPosition(position) 

演員通過上面的語句返回到一個String此值,如果它是一個字符串,美用於你的列表視圖。

希望it.helps你。

+0

我應該在哪裏使用itemclicklistener? – user1933770 2013-04-21 06:47:50

+0

你應該先寫信給listview.setOnItemClickListener(this);所以現在你的類應該實現onItemClickListener,並在該類中使用此接口重寫方法。這會自動發生在eclipse.by中,因此你可以調用onListItemClicked,它只有很少的參數...因此它就是 – cafebabe1991 2013-04-21 06:49:03

+0

我沒有了解我的onItemClick裏面的Fragment有什麼問題。它應該可以工作,但它不會 – user1933770 2013-04-21 07:09:53