2014-11-01 114 views
0

的Android代码:OnItemClickListener不ListView中工作,碎片

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

     View rootView; 

     rootView = inflater.inflate(R.layout.view_contact_list, container, false); 

     listview = (ListView) rootView.findViewById(R.id.listView1); 

     Log.d("Contact List", "Before read method"); 

     ReadContacts(); 

     Log.d("Contact List", "After Read Method"); 

     Log.d("Before ", "Before Adapter Initialization"); 

     adapter = new ContactListAdapter(getActivity(), contact_list); 

     Log.d("After", 
       "After Adapter Initializaiton and before listview set adapter"); 

     listview.setAdapter(adapter); 

     listview.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       // TODO Auto-generated method stub 

       TextView name = (TextView) arg1 
         .findViewById(R.id.tvContactName); 
       TextView phone = (TextView) arg1 
         .findViewById(R.id.tvContactPhone); 

       Toast.makeText(
         getActivity(), 
         "Name : " + name.getText().toString() + "Phone : " 
           + phone.getText().toString(), 
         Toast.LENGTH_SHORT).show(); 

      } 
     }); 
     return rootView; 

} 

适配器工作正常,我可以看到数据在ListView但我不能点击列表中的项目。没有响应

我已经设置了android:点击=“真”

片段是视图寻呼机

我不能用列表的片段,并希望使用适配器的一部分..什么是错误?

我也贴在onActivityCreated()这个方法setonitemclick。它没有工作

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="match_parent" 
android:orientation="vertical" > 


<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:focusable="false" 
    > 
</ListView> 

</LinearLayout> 

我使用的适配器:

package com.example.eh; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import android.app.Activity; 
import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebView.FindListener; 
import android.widget.ArrayAdapter; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.TextView; 

    public class ContactListAdapter extends BaseAdapter 
{ 


Context context; 
List<Tuple> contact_list=new ArrayList<Tuple>(); 



public ContactListAdapter(Context ctx, List<Tuple> data) 
{ 
    context = ctx; 
    contact_list = data; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    //return contacts.size(); 
    return contact_list.size(); 

} 

@Override 
public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return contact_list.get(arg0); 
} 

@Override 
public long getItemId(int arg0) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

public String getName(int arg0) 
{ 
    return contact_list.get(arg0).getContactName(); 
} 

public String getPhone(int arg0) 
{ 
    return contact_list.get(arg0).getContactPhone(); 

} 


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

    View view = convertView; 
    ViewHolder holder = null; 

    if (convertView == null) { 

     view = ((Activity) context).getLayoutInflater().inflate(R.layout.row_full_contact_list, parent, false); 
     holder = new ViewHolder(view); 
     view.setTag(holder); 

    } else { 
     holder = (ViewHolder) view.getTag(); 
    } 

    holder.name.setText(getName(position)); 
    holder.phone.setText(getPhone(position)); 

    return view; 
} 

private class ViewHolder { 
    public TextView name; 
    public TextView phone; 
    public Button invite; 

    public ViewHolder(View v) 
    { 
     name = (TextView) v.findViewById(R.id.tvContactName); 
     phone = (TextView) v.findViewById(R.id.tvContactPhone); 
     invite = (Button) v.findViewById(R.id.bInviteFriends); 
    } 

    } 

} 

的行项目的XML:

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

<RelativeLayout 
    android:id="@+id/LeftSide" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/tvContactName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:textSize="30dp" 
     android:maxLines="1"   

     /> 

    <TextView 
     android:id="@+id/tvContactPhone" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/tvContactName" 
     android:text="TextView" /> 
</RelativeLayout> 

<Button 
    android:id="@+id/bInviteFriends" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="Invite" /> 

</RelativeLayout> 
+0

后您同时查看,主要和RowView的XML。 – 2014-11-01 11:30:51

+0

你是在onclicklistener上设置按钮? – 2014-11-01 11:48:19

+0

没有setonclicklisterer是在listview项目..我有listview.setonItemClick – 2014-11-01 11:52:13

回答

0

你有没有把breakpoint放在onItemClick的方法里面来确定它没有被解雇?

尝试添加这行代码在你listview's XML:

android:focusable="false" 
+0

我没有把任何断点,我所做的是显示敬酒onitemclick – 2014-11-01 11:38:17

0

试试这个

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
               int position, long id) { 
      // TODO Auto-generated method stub 

      Toast.makeText(
        getActivity(),position.toString+" is the position you clicked!!",Toast.LENGTH_SHORT).show(); 
      TextView name = (TextView) arg1 
        .findViewById(R.id.tvContactName); 
      TextView phone = (TextView) arg1 
        .findViewById(R.id.tvContactPhone); 

      Toast.makeText(
        getActivity(), 
        "Name : " + name.getText().toString() + "Phone : " 
          + phone.getText().toString(), 
        Toast.LENGTH_SHORT).show(); 

     } 
    });  
相关问题