2013-08-01 41 views
0

我有顯示其由包含圖像和文本等ListFragment OnItemClickListener

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:background="@color/main_background" 
    android:paddingLeft="20dp" 
    android:paddingTop="10dp" 
    android:paddingRight="20dp" 
    android:paddingBottom="10dp" 
    android:descendantFocusability="blocksDescendants" > 
    <ImageView 
     android:id="@+id/source_image" 
     android:layout_width="30dp" 
     android:layout_height="30dp" 
     android:background="@color/black" 
     android:layout_alignParentLeft="true" 
     android:contentDescription="@string/info" /> 
    <TextView 
     android:id="@+id/item_description" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/white" 
     android:textStyle="bold" 
     android:layout_toRightOf="@+id/source_image" 
     android:textColor="@color/black" 
     android:paddingRight="5dp" 
     android:paddingTop="5dp" 
     android:paddingBottom="5dp" 
     android:paddingLeft="5dp" 
     android:textAlignment="center" 
     android:text="@string/item_desc" /> 

     <ImageView 
     android:id="@+id/arrow_image" 
     android:layout_width="30dp" 
     android:layout_height="30dp" 
     android:layout_marginRight="30dp" 
     android:layout_alignParentRight="true" 
     android:contentDescription="@string/info" 
     android:src="@drawable/arrow_right" /> 

    <HorizontalScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="none" 
     android:layout_centerInParent="true" 
     android:background="@color/main_background" 
     android:layout_below="@+id/item_description"> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@color/white" 
      android:layout_gravity="fill_horizontal" 
      android:layout_marginRight="20dp" 
      android:padding="5dp" 
      android:orientation="horizontal" > 
      <ImageView 
       android:id="@+id/item_image" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:contentDescription="@string/info" 
       android:src="@drawable/chameleon" /> 
      <ImageView 
       android:id="@+id/item_image2" 
       android:paddingLeft="10dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:contentDescription="@string/info" 
       android:gravity="center" 
       android:src="@drawable/chameleon" /> 
      <ImageView 
       android:id="@+id/item_image3" 
       android:paddingLeft="10dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:contentDescription="@string/info" 
       android:gravity="center" 
       android:src="@drawable/chameleon" /> 
     </LinearLayout> 
    </HorizontalScrollView> 

</RelativeLayout> 

我試圖建立一個OnItemClickListener所以當用戶點擊任何地方相對佈局的我的自定義列表項的列表片段列表項目,一個新的意圖啓動。

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    //Populate list view with array objects 
    adapter = new HomeListItemAdapter(items, getActivity()); 
    listView = getListView(); 
    listView.setAdapter(adapter); 

    listView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       Toast toast = Toast.makeText(listView.getContext(), "CLICKED", Toast.LENGTH_SHORT); 
       toast.show(); 

      } 
    }); 
} 

我試圖這樣,如上圖所示,但似乎無法得到OnItemClickListener工作(只是烤麪包,而不是意圖測試現在)。我哪裏錯了? 感謝

編輯:添加自定義列表適配器代碼

public class HomeListItemAdapter extends BaseAdapter { 

    private List<HomeListItem> items; 
    private Context context; 
    private int numItems = 0; 

    public HomeListItemAdapter(final List<HomeListItem> items, Context context) { 
     this.items = items; 
     this.context = context; 
     this.numItems = items.size(); 
    } 

    public int getCount() { 
     return numItems; 
    } 

    public HomeListItem getItem(int position) { 
     return items.get(position); 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     // Get the current list item 
     final HomeListItem item = items.get(position); 
     // Get the layout for the list item 
     final RelativeLayout itemLayout = (RelativeLayout) LayoutInflater.from(context).inflate(R.layout.list_item, parent, false); 
     // Set the the item picture(s) 
     ImageView itemImage = (ImageView) itemLayout.findViewById(R.id.item_image); 
     itemImage.setImageDrawable(item.getItemPic()); 
     //Set the profile picture/source picture 
     ImageView sourceImage = (ImageView) itemLayout.findViewById(R.id.source_image); 
     sourceImage.setImageDrawable(item.getSourcePic()); 


     // Set the text label as defined in our list item 
     TextView itemDesc = (TextView) itemLayout.findViewById(R.id.item_description); 
     AssetManager am = context.getAssets(); 
     Typeface font = Typeface.createFromAsset(am, "Raleway-Thin.ttf"); 
     itemDesc.setTypeface(font); 
     itemDesc.setText(item.getText()); 

     return itemLayout; 
    } 

} 
+0

顯示正常列表中的項目? –

+0

他們顯示得很好 – user1356791

回答

1

儘量延長ListFragment(而不是隻是一個正常的片段)。然後你就可以覆蓋onListItemClicked

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

這給你一個列表,查看,位置,編號,所以你應該能夠做你所需要的。

+0

我已經有了擴展ListFragment的類。我嘗試onListItemClick但沒有運氣 – user1356791

0

如果你在行內有一個TextView,那麼當點擊該行時將會獲得焦點。這將意味着onListItemClick不被調用。您需要在TextView上使用OnClickListener或從TextView中移除焦點。

ListFragment OnListItemClick not being called

+0

試圖消除焦點,但仍然沒有運氣 – user1356791

+0

在Horizo​​ntalScrollView上設置android:clickable =「false」有什麼區別嗎? – MungoRae

+0

不,它不幸的。 – user1356791

0

你能嘗試設置的HozizontalScrollView拿不到關注與XML屬性

android:focusable="false" 
+0

試過但沒有運氣 – user1356791

+0

這可能是您的自定義適配器的問題,也許發佈代碼? – AnthonyK

+0

好的我發佈了代碼 – user1356791