【问题标题】:ListView onItemSelected ListenerListView onItemSelected 监听器
【发布时间】:2015-02-01 02:40:35
【问题描述】:

我只想在列表视图的选定行中显示图像。代码如下:

private class ListAdapter extends BaseAdapter {
    LayoutInflater inflater;
    ViewHolder viewHolder;

    public ListAdapter(Context context) {
        inflater = LayoutInflater.from(context);
    }

    public int getCount() {
        return attendeeList.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        if (convertView == null) {

            convertView = inflater.inflate(R.layout.attendee_listview_row,
                    null);
            viewHolder = new ViewHolder();

            viewHolder.txt_dName = (TextView) convertView
                    .findViewById(R.id.txtDisplayName);

            viewHolder.txt_dAddr = (TextView) convertView
                    .findViewById(R.id.txtDisplayAddr);

            viewHolder.txt_dtelNo = (TextView) convertView
                    .findViewById(R.id.txtDisplayTelNo);

            viewHolder.btn_scan = (ImageView) convertView.findViewById(R.id.btnScan);
            viewHolder.registered_tag = (ImageView) convertView.findViewById(R.id.ivRegisteredTag);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.txt_dName.setText(attendeeList.get(position)
                .getAccountName().trim());

        viewHolder.txt_dAddr.setText(attendeeList.get(position)
                .getAttendeeAddr().trim());

        viewHolder.txt_dtelNo.setText("Tel no: "
                + attendeeList.get(position).getTelNo().trim());        

        viewHolder.btn_scan.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                viewHolder.registered_tag.setVisibility(View.VISIBLE);
                Intent intent = new Intent(
                        "com.google.zxing.client.android.SCAN");
                intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
                startActivityForResult(intent, 0);

            }
        });

        return convertView;
    }
}

使用这些代码,我试图在 btn_scan onClick 上显示注册标签。但是,图像并未真正显示在所选行中。它显示在另一行。

有什么想法吗?提前致谢。

【问题讨论】:

  • 有什么想法吗?我真的卡住了

标签: java android listview onitemselectedlistener


【解决方案1】:

您可能会在单击任何行时更改最后一行图像,因为viewHolder 将在调用getView 时包含最后一行视图。使用viewHolder.btn_scan视图的setTaggetTag方法在onClick方法中保存并获取选中的行视图:

viewHolder.btn_scan.setTag(viewHolder);
viewHolder.btn_scan.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
               ViewHolder selectedViewHolder=(ViewHolder)v.getTag();
               selectedViewHolder.registered_tag.setVisibility(View.VISIBLE);
               ...
            }
        }); 

【讨论】:

  • 所以我把这些代码放在 convertView.setTag(viewHolder); 之后。并删除我的 onClickListener 按钮?
  • @IWasSoLost:不,只需使用这些代码代替 setOnClickListener
  • 我明白了,但是您有什么想法可以将图像显示延迟 10 秒吗?
  • @IWasSoLost :是的,您可以使用Hanlder.postDelayed 延迟图像可见性
  • 没关系我已经通过使用处理程序来发布延迟它了。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多