繁体   English   中英

单击listview按钮时,日志显示:“ ViewPostImeInputStage ACTION_DOWN”

[英]On listview button click, log shows: “ViewPostImeInputStage ACTION_DOWN”

我已经看到很多人都遇到了这个问题,但是提供给他们的解决方案(例如将布局放入另一个布局中)无效。 因此,我决定上载我自己的代码,以希望有人知道它出了什么问题。 我有一个在每行上都有2个按钮的列表视图(subtract_button和add_button),该视图使用以下适配器类显示:

public class AdapterSIUsed2 extends CursorAdapter implements View.OnClickListener {

private RowViewHolder rowView = new RowViewHolder();

public static class RowViewHolder {
    public TextView name,used,category,amount;
    public Button subtract,add;
    public int position;
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case (rowView.add.getId()):
            // Do something
            Log.d("Button clicked","add");
            return;
        case (rowView.subtract.getId()):
            Log.d("Button clicked","subtract");
            return;
    }
}

public AdapterSIUsed2(Context context, Cursor cursor) {
    super(context, cursor, 0);
}

@Override
public View newView(Context context, Cursor csr, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
    View listView = inflater.inflate(R.layout.listlayout_shopping_items_used, null);
    rowView.name = (TextView) listView.findViewById(R.id.shopping_items_name);
    rowView.used = (TextView) listView.findViewById(R.id.shopping_items_used);
    rowView.category = (TextView) listView.findViewById(R.id.shopping_items_category);
    rowView.amount = (TextView) listView.findViewById(R.id.shopping_items_amount);
    rowView.subtract = (Button) listView.findViewById(R.id.subtract_button);
    rowView.add = (Button) listView.findViewById(R.id.shopping_items_add_button);
    rowView.position = csr.getPosition();
    rowView.subtract.setOnClickListener(this);
    rowView.add.setOnClickListener(this);
    listView.setTag(rowView);
    rowView.name.setTag(rowView);
    rowView.used.setTag(rowView);
    rowView.category.setTag(rowView);
    rowView.amount.setTag(rowView);
    return listView;
}

@Override
public void bindView(View view, Context context, Cursor csr) {
    TextView name = (TextView) view.findViewById(R.id.shopping_items_name);
    TextView used = (TextView) view.findViewById(R.id.shopping_items_used);
    TextView category = (TextView) view.findViewById(R.id.shopping_items_category);
    TextView amount = (TextView) view.findViewById(R.id.shopping_items_amount);

    name.setText(csr.getString(csr.getColumnIndex(Constants.SHOPPING_ITEMS_COL_1)));
    used.setText(csr.getString(csr.getColumnIndex(Constants.SHOPPING_ITEMS_COL_2)));
    category.setText(csr.getString(csr.getColumnIndex(Constants.SHOPPING_ITEMS_COL_3)));
    amount.setText(csr.getString(csr.getColumnIndex(Constants.SHOPPING_ITEMS_COL_4)));

    Button add = (Button) view.findViewById(R.id.shopping_items_add_button);
    add.setOnClickListener(this);
    Button subtract = (Button) view.findViewById(R.id.subtract_button);
    subtract.setOnClickListener(this);

    int pos = csr.getPosition();
    add.setTag(pos);
    subtract.setTag(pos);
}

奇怪的是,当我单击加或减按钮时,在两种情况下,我的日志都显示以下两行:D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN我/项目单击了::(当我单击列表项本身时,我的日志仅显示以下行:D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN

有谁知道这里发生了什么以及如何解决? 提前致谢!

ACTION_DOWN只是表示已按下某些内容。 ACTION_UP有关,这意味着不再按下任何内容。

显然,您所按下的按钮是您在bindView设置的bindView 现在还不清楚为什么单击列表项本身时会出现这种行为。 似乎您没有在单元格本身上设置任何onClickListeners ,也没有设置任何父类ViewGroup 您可能需要仔细检查,并确保您的布局ID是应该的。 任何使用此适配器作为适配器的事情都有可能发生混乱。

似乎您从接口实现中覆盖了onClick方法,从而获得了正确的行为。 即使它为您提供了更多信息,它也会记录您的要求(“单击的项目::(”)。我建议您仅使用它,然后将日志更改为使用Log.d代替( Log.d专用于调试目的),您也可以执行以下操作:

    @Override
    public void onClick(View v) {
        if (v.getId() == rowView.add.getId()) {
            //do something;
            return;
        if (v.getId() == rowView.subtract.getId()) {
            //do something;
            return;
        }
    }
});

然后你就做

rowView.add.setOnClickListener(this);
rowView.subtract.setOnClickListener(this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM