2016-12-14 64 views
1

我開發了一個自定義適配器的listview,但其onclicklistner不工作,雖然我沒有得到任何錯誤的日誌。以下是代碼自定義列表視圖onitemclick listner不工作

public class HospiRow extends AppCompatActivity { 

private List<ContactData> hospiData = new ArrayList<ContactData>(); 
Intent intent; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_layout); 

    hospiData.add(new ContactData("Shrotri Hospital", "Datta chowk, Yavatmal", "Phone Number 07232 232383", R.drawable.call_button3)); 
    hospiData.add(new ContactData("Tarak Hospital","Shani chowk, Yavatmal","Phone Number 07232 232383", R.drawable.call_button3)); 
    hospiData.add(new ContactData("Dattani Hospital","Shivagi nagar, Yavatmal","Phone Number 07232 232383", R.drawable.call_button3)); 
    hospiData.add(new ContactData("Chattani Hospital","Darda nagar, Yavatmal","Phone Number 07232 232383", R.drawable.call_button3)); 
    hospiData.add(new ContactData("Thakare Hospital","Anne Vidyalaya, Yavatmal","Phone Number 07232 232383", R.drawable.call_button3)); 
    hospiData.add(new ContactData("Bade Hospital","Laxminagar, Yavatmal","Phone Number 07232 232383", R.drawable.call_button3)); 
    hospiData.add(new ContactData("Rathode Hospital","Balaji Society, Yavatmal","Phone Number 07232 232383", R.drawable.call_button3)); 

    ArrayAdapter<ContactData> hospiAdapter = new DataAdapter(this, R.layout.hospi_row, hospiData); 
    ListView myList = (ListView) findViewById(R.id.myFirstListView); 
    myList.setAdapter(hospiAdapter); 

    myList.setOnItemClickListener(
      new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        ContactData singleItem = (ContactData) parent.getItemAtPosition(position); 
        String number = singleItem.getTelephoneNumber(); 
        Toast.makeText(HospiRow.this,number, Toast.LENGTH_LONG).show(); 
        intent = new Intent(Intent.ACTION_DIAL); 
        intent.setData(Uri.parse("tel:" + number)); 
        startActivity(intent); 
       } 
      } 
    ); 

} 

}

請幫助列表視圖

XML代碼

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/myFirstListView" 
     android:focusable="false" 
     android:focusableInTouchMode="false"/> 
</LinearLayout> 

的XML文件的名稱是my_layout.xml

+0

後適配器XML文件 – siva35

+0

和適配器代碼以及 –

+0

你可以發佈您的活動的XML?! –

回答

0

按鈕或任何視圖,請確保這些項目不可點擊。

android:focusable="false" 
android:focusableInTouchMode="false" 

,如果它不與SimpleAdapter工作,嘗試用CustomListViewAdapter有每個視圖的工作,使XML點擊假的。

+0

嘗試過,但它仍然不工作 –

+0

發佈hospi_row.xml文件 – Nithin

0

在您的適配器的xml文件中setClickable爲false這樣的行項目。

<TextView 
..... 
android:clickable="false" 
.... 
/> 

如果列表中的任何行項目包含可聚焦或可點擊的視圖,則OnItemClickListener將不起作用。

Reffer Here

1

如果列表中的任何行項目包含可聚焦或點擊視圖然後OnItemClickListener將無法正常工作。 行項目必須有一個像

android:descendantFocusability="blocksDescendants" 

您的列表項XML設置了一個param必須是這樣的。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:baselineAligned="false" 
android:descendantFocusability="blocksDescendants" 
android:gravity="center_vertical" > 

// your other widgets here 

</LinearLayout>