ListView项目无法点击

时间:2014-01-02 21:01:36

标签: android listview

我试图创建一个基于输入字符串搜索数据库的活动,然后在列表视图中返回结果。但这一切都正常,我的listview项目无法点击。我尝试过改变焦点和可点击的属性,但到目前为止还没有任何工作。

主XML(add_friend_layout.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="match_parent" >


 <LinearLayout android:id="@+id/AddFriendHeaderLayout"
        android:layout_marginTop="3dip"
        android:layout_height="45dip"
        android:orientation="horizontal" 
        android:layout_width="fill_parent" 
        android:gravity="center">
        <EditText
            android:id="@+id/et_SearchFriend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:ems="10"
            android:inputType="text" />

        <Button
            android:id="@+id/bt_SearchFriend"
            android:layout_width="wrap_content"
            android:layout_height="40dip"
            android:focusable="false"
            android:icon="@android:drawable/ic_search_category_default"
            android:text="Search" >

        </Button>   

    </LinearLayout>
    <LinearLayout android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="60dip"  
        android:layout_marginBottom="5dip"
        android:layout_alignParentBottom="true"
        android:layout_above="@+id/AddFriendHeaderLayout"
        android:id="@+id/searchFriendFooterLayout">

        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:clickable="true"
            android:layout_height="wrap_content">

        </ListView>
    </LinearLayout>

</RelativeLayout>

ListView XML(single_listview_layout.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true" >

<TextView 
    android:id="@+id/tv_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="20sp" >


</TextView>
</LinearLayout>

主Java函数(SearchFriendActivity.java):

public class SearchFriendActivity extends ListActivity {

//Progress Dialog
private ProgressDialog pDialog;
private Button bt_searchFriend;
private EditText et_Search_String;
private ListView tv_listview;

String[] arrFriends;
String[] arrUserId;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try{
        setContentView(R.layout.add_friend_layout);


        bt_searchFriend= (Button) findViewById(R.id.bt_SearchFriend);
        et_Search_String = (EditText) findViewById(R.id.et_SearchFriend);
        tv_listview = (ListView) findViewById(R.id.tv_list);


        String searchString="";

        //searchString = String.valueOf(et_Search_String.getText());
        Log.i ("log_search","value of searchString: " + searchString);

        bt_searchFriend.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                try{



                    searchFriends aTask = new searchFriends();

                             aTask.execute(String.valueOf(et_Search_String.getText()));
                    String rResult = aTask.get();

                    // Convert aResult to array
                    arrFriends = convertJSONData(rResult);
                    arrUserId = convertJSONDataToUserArray(rResult);


                    setListAdapter(new ArrayAdapter<String>
                                                    (getBaseContext(),       
                                                    R.layout.single_listview_layout, 
                            R.id.tv_list,
                            arrFriends));

                }catch(Exception e){
                    Log.e ("log_search_load",e.toString());
                }
            }
        });


        tv_listview = getListView();


        //handler for List Item click
        tv_listview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
                // When clicked, show a toast with the TextView text
                Toast.makeText(getApplicationContext(),
                        "Friend request sent for " + 
                                            ((TextView) view).getText(), 
                        Toast.LENGTH_SHORT).show();

                Log.i("log_search_listclick", "Listview clicked");
            }
        });

    }catch(Exception e){
        Log.e ("log_search_load2",e.toString());
    }
} 

1 个答案:

答案 0 :(得分:-1)

首先,不要使用可聚焦和可点击的。当您使用setOnclick或其他人时,他们会自动创建。

其次,删除尝试缓存博客然后启动应用程序。因为当问题创建时程序会出现问题,你无法理解问题出在哪里。

===&GT;第三&LT; ==== 你被使用(tv_listview= ...)第二次

  1. tv_listview = (ListView) findViewById(R.id.tv_list);
  2. tv_listview = getListView();
  3. 然后你正在尝试tv_listview.setOnItemClickListener....。如果第二个视图不是第一个视图seton不工作“R.id.tv_list”。