[英]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.