【问题标题】:Click on list item of a ListView doesn't respond单击 ListView 的列表项没有响应
【发布时间】:2013-08-27 20:42:57
【问题描述】:

我正在我的代码中实现ListView。但是当我点击这些项目时,它不会以任何方式响应点击。有人可以帮我吗?提前致谢。

这里是代码。

public class ListaActivity extends Activity {

    public final static String EXTRA_MESSAGE = "com.example.provacomunicazione.MESSAGE";
    @Override
    public void onCreate(Bundle savedInstanceState)  {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.lsta);
        Resources res = getResources();
        String[] Authors = res.getStringArray(R.array.Lista_Nomi_E_Cognomi_Autori);
        ArrayList<String> Autori = new ArrayList<String>();
        for (String temp:Authors) {
            Autori.add(temp);
        }
        Collections.sort(Autori);
        ArrayList<String> AutoriLetteraSelezionata = new ArrayList<String>();
        for (String temp:Autori) {
            if (temp.charAt(0)=='A') {
                AutoriLetteraSelezionata.add(temp);
            }
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.textviewitem, AutoriLetteraSelezionata);
        ListView listView = (ListView) findViewById(R.id.listView1);
        listView.setAdapter(adapter);
        listView.setClickable(true);
        listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

            CharSequence autore = "("+((TextView)view).getText()+")";

            Intent i = new Intent(ListaActivity.this, SecondaryActivity.class);
            i.putExtra(EXTRA_MESSAGE, autore);
            startActivity(i);  
        });
    }
}    

【问题讨论】:

  • 你应该删除这一行:listView.setClickable(true);
  • 谢谢,但我试过了,还是不行,但你说得对,它很有用

标签: android listview onclick onclicklistener listitem


【解决方案1】:

您应该在项目列表视图(TextView、ImageView 等)中定义所有子对象:

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

对于根项RelativeLayout/LinearLayout等,定义:

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

如果您不定义这些,它们将“捕获”点击事件。 如果您有自定义 listView 适配器,只需检查您是否覆盖:

@Override
public boolean isEnabled(int position)
{
    return true;
}

【讨论】:

  • 哇,我有另一个自定义适配器,点击效果很好,但另一个列表需要这个才能工作。很奇怪,但很高兴它起作用了:D
  • 我正在使用带有 cardview 的自定义列表视图。Listiview 点击不起作用
  • 感谢您的回答,我刚刚删除了子项上的 onclik true 并且它起作用了
【解决方案2】:

在我的例子中,一个问题实际上是 ListView 包含 HorizontalScrollViews。

HSV 消耗对项目的点击,并且不会将 OnItemClick 返回到 ListView

我在一个适配器内写了一个OnClickListener 来解决这个问题,该适配器返回一个回调到ListView。见这里:https://stackoverflow.com/a/43653085/2914140

【讨论】:

    【解决方案3】:

    在客户项目中,

    设置每个元素

    android:clickable="true"
    android:focusable="false"
    

    为我工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多