Listview onItemClick无法按预期工作

时间:2016-03-29 13:37:00

标签: android android-intent onitemclick

My log when the intent actually works这是一个奇怪的问题,我非常好奇。我有一个配置文件列表视图,当我点击一个特定的配置文件时,我想自己查看该特定配置文件。当我尝试在列表视图中选择一个项目时,它通常不起作用,但由于某些奇怪的原因,它有时会起作用(大约十分之一)。这让它更令人沮丧。有没有人遇到过这个问题?谢谢。 (我发布了一个类似于这个问题的问题,认为它根本不起作用,所以请不要重复,谢谢)。

public class CowListView extends ListActivity {

    RegisterCowAdapter cowAdapter;
    private DataBaseHelper databaseHelper;
    public ListView listView;
    TextView student_Id;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cow_list_item);
        cowAdapter = new RegisterCowAdapter(this);

        cowAdapter.open();
        updateCowUI();
        listView = (ListView) findViewById(android.R.id.list);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                student_Id = (TextView) view.findViewById(R.id.cowtagnolist);
                String studentId = student_Id.getText().toString();
                Intent i = new Intent(view.getContext(), CowProfile.class);
                Toast.makeText(CowListView.this, "Clicked", Toast.LENGTH_SHORT).show();
                i.putExtra("student_Id", Integer.parseInt(studentId));
                Log.d("StartingCow", studentId);
                startActivityForResult(i, 0);

            }

        });

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:descendantFocusability="blocksDescendants"
    android:longClickable="true"
    android:focusableInTouchMode="false"
    android:clickable="false"
    android:focusable="false">

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

    <TextView
        android:id="@+id/cowtagnolist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/black"
        android:clickable="true">
    </TextView>

    <TextView
        android:id="@+id/cowdoblist"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"    
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="17dp"
        android:clickable="true"
        android:textColor="@color/black">    
    </TextView>
</LinearLayout>

3 个答案:

答案 0 :(得分:1)

我弄清楚出了什么问题,我没有正确定义我的子对象和我的根项。希望这可以帮助那些有类似问题的人。 子项应该如下所示实现:

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

在根项目中:

android:clickable="false"
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="false"

答案 1 :(得分:0)

你应该将Listview宽度保持为Match_parent,如果你使用wrap_content,它将不会获得超出其子大小或宽度的click事件。我认为这可能是问题所在。如果您的Listview单行布局也包含宽度为wrap_content的子视图,则问题可能会增加。

答案 2 :(得分:0)

问题可能在于xml ??

我看到了下一个字符串

机器人:longClickable = “真” 机器人:可点击= “假”

当您长时间点击而不是平常时,

看起来有10次成功点击中的一次。要解决问题,请将clickable变为true

机器人:可点击= “真”

如果我理解正确的问题 - 它应该有帮助