2013-08-01 101 views
3

我的問題是我的列表onclick listener返回LinearLayout不是文本視圖。所以我不知道如何捕捉到點擊的項目 這就是簡單的一行XMLandroid列表視圖項目點擊列表

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp"> 

<ImageView android:id="@+id/imgIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentBottom="true" 
    android:layout_marginRight="15dp" 
    android:layout_marginTop="5dp" 
    android:layout_marginBottom="5dp" /> 

<TextView android:id="@+id/txtTitle" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentBottom="true" 
    android:textStyle="bold" 
    android:textSize="22dp" 
    android:textColor="#000000" 
    android:layout_marginTop="5dp" 
    android:layout_marginBottom="5dp" /> 

</LinearLayout> 

那主要

listView1.setOnItemClickListener(new OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, 
          long id) { 

         String item = ((TextView)view).getText().toString(); 
         Log.w("item", item); 
         Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 

        } 
       }); 

這個項目程序崩潰,因爲返回的觀點的LinearLayout我怎麼能抓住文在LinearLayout裏面查看?!

+0

你是否從listview獲取列表項? –

+0

使用view.findViewById(R.id.TextViewID) – 2013-08-01 10:50:26

回答

2
public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
     { 
      TextView c = (TextView)view.findViewById(R.id.txtTitle); 

      String sel_item = c.getText().toString(); 

      Toast.makeText(RingSubCatActivity.this,sel_item, Toast.LENGTH_SHORT).show(); 

     }}); 
0

您的onClick改成這樣:

public void onItemClick(AdapterView<?> parent, View view, int position,long id) { 
    TextView textView = (TextView) view.findViewById(R.id.txtTitle); 
    String item = textView.getText().toString(); 
    Log.w("item", item); 
    Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 
} 

重要的是,你首先需要得到你的父母LinearaLayout TextView的。

0
((TextView)((LinearLayout)view).getChildAt(1)).getText().toString(); 
1

您將收到父視圖中,你將不得不找到父使用

view.findViewById

再抹上並進行

listView1.setOnItemClickListener(new OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position,      long id) { 
    if(view !=null) 
    { 
String item = ((TextView) view.findViewById(R.id.YOUR_VIEW_ID)).getText().toString(); 
Log.w("item", item); 
Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show(); 
    } 
} 
}); 
文本視圖
-1

在onItemClickListener

public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
    { 
     TextView tv = (TextView)view.findViewById(R.id.txtTitle) 
     Toast.makeText(RingSubCatActivity.this,tv.getText().toString(), Toast.LENGTH_SHORT).show(); 

    }}); 

使用視圖對象來初始化你的TextView和獲取文本中舉杯顯示。 。

+0

不知道爲什麼這是沒有理由downvoted。 – Raghunandan

0

做這樣

字符串VAL =((TextView的) view.findViewById(R.id.txtTitle))getText.toString();

+0

這是錯誤的我編輯 – 2013-08-01 10:54:25

+0

耶..謝謝你把括號.. – karan421

0

有幾個你需要做的事情,依次是:

  • 使TextView的點擊
  • 使TextView的可聚焦
  • 附加一個onclick到的TextView或OnItemClicked到listview
  • 通過XML或代碼將LinearLayout setDecentantFocusability改爲FOCUS_AFTER_CHILDREN
  • 一旦進入OnClick,您將擁有文本視圖,或者如果您要進入OnItemClicked路線 - 您將捕獲焦點項目。

因此,您的解決方案是挖掘您收到的LinearLayout以獲取所需的文本視圖,或修復線性佈局以不接管焦點或點擊本身。

0

如果父視圖LinearLayout中,你需要找到父視圖裏面你的TextView, 檢查下面的代碼,我希望它會工作...

String item = ((TextView) view.findViewById(R.id.txtTitle)).getText().toString(); 
0

您可以嘗試使用
String item = (TextView)((LinearLayout)view).getChildAt(1).getText().toString();
這是從這個答案適應於similar question

0

我名單的onclick監聽器返回的LinearLayout不是一個文本視圖

這就是它應該做的。

我不知道如何捕捉到點擊項目多數民衆贊成在簡單的行XML

onItemClick()方法有View作爲其第二個參數。這不是被點擊的View,而是那個適配器提供給ListView的物品的View

您可以使用findViewById()在此View上搜索內部視圖。

我看到您正在嘗試獲取項目視圖的文本字符串。從適配器獲取數據比從視圖獲取數據總是更好:

Object item = listAdapter.getItem(position); 
String text = item.getSomeProperty();