- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为我的 ListView 实现了自定义适配器,然后我使用函数 setOnItemClickListener 和 getItemAtPosition 从特定列表项中提取对象。但是当我点击一个特定的列表项时,没有任何反应。这是我的自定义适配器的外观:
private class MyCustomAdapter extends ArrayAdapter<Werkzeug> {
private ArrayList<Werkzeug> werkzeugList;
public MyCustomAdapter(Context context, int textViewResourceId, ArrayList<Werkzeug> werkzeugList) {
super(context, textViewResourceId, werkzeugList);
this.werkzeugList = new ArrayList<Werkzeug>();
this.werkzeugList.addAll(werkzeugList);
}
private class ViewHolder {
CheckBox checkBox;
ImageView imageView;
TextView w_Name;
TextView w_Preis;
TextView w_Waehrung;
TextView w_haeufigkeit;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Log.v("ConvertView", String.valueOf(position));
if (convertView == null) {
LayoutInflater vi = (LayoutInflater)getSystemService( Context.LAYOUT_INFLATER_SERVICE );
convertView = vi.inflate(R.layout.listview2_layout, null);
holder = new ViewHolder();
holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBox);
holder.imageView = (ImageView) convertView.findViewById(R.id.werkzeugeImage);
holder.w_Name = (TextView) convertView.findViewById(R.id.werkzeugeName);
holder.w_Preis = (TextView)convertView.findViewById(R.id.werkzeugePreis);
holder.w_Waehrung = (TextView) convertView.findViewById(R.id.euro);
holder.w_haeufigkeit = (TextView) convertView.findViewById(R.id.proTag);
convertView.setTag(holder);
preis_TextView = (TextView)findViewById(R.id.preis_textView);
final Manager manager = (Manager)getApplication();
preis_TextView.setText(Integer.toString(manager.getSum()));
holder.checkBox.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v ;
Werkzeug werkzeug = (Werkzeug) cb.getTag();
if(cb.isChecked()) {
manager.setSum( manager.getSum()+ Integer.parseInt(werkzeug.getPreis()) );
preis_TextView.setText(Integer.toString( manager.getSum() ));
manager.listOfSelectedItems.put(werkzeug.getName(), werkzeug);
}
else {
manager.setSum( manager.getSum()- Integer.parseInt(werkzeug.getPreis()) );
preis_TextView.setText(Integer.toString( manager.getSum() ));
manager.listOfSelectedItems.remove(werkzeug.getName());
}
werkzeug.setCheckBoxState(cb.isChecked());
}
});
}
else {
holder = (ViewHolder) convertView.getTag();
}
Werkzeug werkzeug = werkzeugList.get(position);
holder.imageView.setImageResource(werkzeug.getBild());
holder.w_Name.setText(werkzeug.getName());
holder.checkBox.setChecked(werkzeug.isCheckBoxState());
holder.w_Preis.setText(werkzeug.getPreis());
holder.w_Waehrung.setText(werkzeug.getWaehrung());
holder.w_haeufigkeit.setText(werkzeug.getHauefigkeit());
holder.checkBox.setTag(werkzeug);
return convertView;
}
}
这是 Werkzeug.java
public class Werkzeug {
private String name;
private String preis;
private String waehrung;
private String hauefigkeit;
private int bild;
private boolean checkBoxState = false;
public Werkzeug ( String name, String preis, String waehrung, String hauefigkeit, int bild, boolean checkBoxState){
this.name = name;
this.preis = preis;
this.waehrung = waehrung;
this.hauefigkeit = hauefigkeit;
this.bild = bild;
this.checkBoxState = checkBoxState;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPreis() {
return preis;
}
public void setPreis(String preis) {
this.preis = preis;
}
public String getWaehrung() {
return waehrung;
}
public void setWaehrung(String waehrung) {
this.waehrung = waehrung;
}
public String getHauefigkeit() {
return hauefigkeit;
}
public void setHauefigkeit(String hauefigkeit) {
this.hauefigkeit = hauefigkeit;
}
public int getBild() {
return bild;
}
public void setBild(int bild) {
this.bild = bild;
}
public boolean isCheckBoxState() {
return checkBoxState;
}
public void setCheckBoxState(boolean checkBoxState) {
this.checkBoxState = checkBoxState;
}
}
这是我调用 SetOnItemClickListener() 的 OnCreate() 中的函数:
private void displayListView() {
//Array list of Werkzeuge
ArrayList<Werkzeug> werkzeugList = new ArrayList<Werkzeug>();
for (int i = 0; i < werkzeuge_name.length; ++i){
Werkzeug werkzeug = new Werkzeug(werkzeuge_name[i], werkzeuge_preis[i], werkzeuge_waehrung[i],
haeufigkeit[i], werkzeuge_bild[i], false);
werkzeugList.add(werkzeug);
}
//create an ArrayAdapter from the String Array
dataAdapter = new MyCustomAdapter(this, R.layout.listview2_layout, werkzeugList);
final ListView listView = (ListView) findViewById(R.id.list_View);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
// This Function doesnt work
listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Werkzeug w = (Werkzeug)( listView.getItemAtPosition(position));
Toast.makeText(getBaseContext(), w.getName(), Toast.LENGTH_SHORT).show();
}
}
);
}
当我点击一个特定的列表项时,没有任何反应。我不知道出了什么问题。
最佳答案
将此行放在 listview2layout 的根元素中。为我工作。
android:descendantFocusability="blocksDescendants"
关于java - setOnItemClickListener 不适用于我的自定义适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376835/
我无法启动“OnItemClickListener”。 你可以看到我的代码 fragment ListAdapter adapter = new SimpleAdapter(this, mylist
让我们从我刚接触 Android 开始吧。 我有一个 GridView 设置作为网格,我用它来代表我正在制作的一个小棋盘游戏应用程序的棋盘。我已经为我的 GridView 设置了一个“setOnIte
所以我试图为我的ListView 设置一个OnItemClickListener。但它根本没有被调用。我已经寻找了一些答案,但没有一个对我有用。 (一切都应该不可聚焦/可点击) ListView 本身
我的Listview应用程序从自定义适配器ListAdapter.class获取itemview的数据和背景颜色。我还需要在下面的textview中设置当前选定的列表项值listview,但是MAin
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: setOnItemClickListener not getting called 我有一个扩展基本适配器的
我无法让 onItemClickListener 工作。我所做的就是使用 Intent 打开一个 fragment 。如果我在这里做任何可疑的事情,请告诉我? public class MyListF
我为我的 ListView 实现了自定义适配器,然后我使用函数 setOnItemClickListener 和 getItemAtPosition 从特定列表项中提取对象。但是当我点击一个特定的列表
我知道这里有很多像我这样的问题,但我不知道为什么没有一个对我有用。 我的目标:我有一个带有 ListView 的 AlertDialog,每行都有一个复选框,我可以选择一些项目,我希望制作一个包含所选
这是我收到的错误: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.List
我有一个 ListView ,我想在单击它时删除 ListView 中的一个项目。 我使用了 list.setOnItemClickListener(this); 但“this”用红色下划线表示, s
我有 listView 和 SimpleAdapter,它们设置了我的 listView。但是没有引发 setOnItemClickListener 事件。 @Override protected v
我的 android 应用程序在横向模式下工作。我有一个包含一些项目的 ListView 。问题是仅当我单击项目名称时才会调用 setOnItemClickListener。我的意思是,如果我选择不是
我的 ListView 包含十行。每行都包含 CheckBox。我如何使用 setOnItemClickListener 检查和取消选中 CheckBox 示例代码:(它对我不起作用) listvie
我已经为我的 View 对象定义了 setOnItemClickListener,我需要在应用程序的某些计算期间禁用它。如何禁用它? 最佳答案 这应该有效: yourView.setOnItemCli
我使用“包含”XML。我不想设置每个“Activity ”setOnItemClickListener。 我的“包含”XML food.xml 我把他放在哪里 每
我试图让我的 setOnItemClickListener 工作,但是当我添加该方法时,Eclipse 说我应该删除“@Override”注释,如果我这样做,监听器将不起作用。问题是我需要捕获“点击”
我有一个带有 81 个按钮的 GridView。我想将 clicklistener 添加到此 gridview,但它不可用。我已经添加了 OnItemClickListener 但它不起作用,我不明白
我正在流行电影项目工作,我使用了电影数据库我成功地从 API 获取了数据,但是当我单击 RecyclerView 中的项目时,它不起作用。我已按照 udacity 教程进行操作 热门电影问题 ther
我的项目使用 Firebase Firestore UI 以便在 fragment 中使用 RecyclerView + CardView 组合显示集合,我使用了提供的适配器由 FirestoreUI
我正在使用 GridView 来显示数字,我想要下一个 Activity 当我点击任何数字时但是当我单击 n 数字时,没有任何反应,logcat 中没有错误,也没有任何强制关闭。 这是代码 publi
我是一名优秀的程序员,十分优秀!