簡體   English   中英

Android ListView setOnItemClickListener不起作用

[英]Android ListView setOnItemClickListener doesn't work

這個簡單的代碼包含一個listView,可以正常工作,將其復制/粘貼到其他項目中后, setOnItemClickListener不起作用,所有類和listview id,活動布局都是唯一的,為什么此偵聽器在項目中不起作用?

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
    private ListView               simple_list;
    private ArrayList<SimpleModel> data;
    private MyAdapter              adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        data = new ArrayList<>();
        simple_list = (ListView) findViewById(R.id.simple_list);

        for (int i = 0; i <= 5; i++) {
            data.add(new SimpleModel("Test " + i, "title " + i, "", ""));
        }

        adapter = new MyAdapter(this, data);
        simple_list.setAdapter(adapter);
        simple_list.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(MainActivity.this, "ddddd " + i, Toast.LENGTH_SHORT).show();
    }

    public class MyAdapter extends ArrayAdapter<SimpleModel> {
        public MyAdapter(Context context, ArrayList<SimpleModel> users) {
            super(context, 0, users);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            SimpleModel data = getItem(position);
            if (convertView == null) {
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.ewallet_items, parent, false);
            }
            TextView e_account_number = (TextView) convertView.findViewById(R.id.e_account_number);
            e_account_number.setText(data.getAccount_number());
            return convertView;
        }
    }

    public class SimpleModel {
        private String account_number;
        private String title;
        private String symbol;
        private String amount;

        public SimpleModel(String account_number, String title, String symbol, String amount) {
            this.account_number = account_number;
            this.title = title;
            this.symbol = symbol;
            this.amount = amount;
        }
    }
}

活動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">

    <ListView
        android:id="@+id/simple_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:cacheColorHint="@null"
        android:divider="@null"/>
</RelativeLayout>

在此處輸入圖片說明


解決的問題

父listview項目為clickable =“ true”,刪除該行后,我的問題解決了

如果您的ListView的行布局/項目布局包含一些可單擊的元素,父級(行布局)失去焦點 ,OnItemClickListener將不再起作用。

如果您的行布局/項目布局具有任何可點擊的項目,那么您必須將其添加到父布局:

android:descendantFocusability="blocksDescendants"

因此,家長將重新獲得關注。

您無需創建新的適配器即可顯示項目,可以通過調用(String [])data.toArray()輕松將ArrayList轉換為字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM