2016-12-14 44 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>