【问题标题】:Like button on every single row of listview列表视图每一行上的点赞按钮
【发布时间】:2015-06-01 22:26:49
【问题描述】:

我正在尝试实现类似 listview 的 instagram ,在每一行中都有类似的按钮和评论框。问题是我如何在列表视图中实现类似的功能,这意味着每一行都是特定的,并且不会对其他行重复,我尝试的是,当用户在某个项目之后单击按钮时,所有其他项目都被单击!表示单击的项目正在重复,很明显我不想要这个!我怎样才能实现类似行的instagram

        @Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    viewHolder mHolder;
    if(convertView==null){
        mHolder = new viewHolder();
        convertView = mInflator.inflate(R.layout.row_all_artist, parent, false);
        mHolder.mArtistName = (TextView) convertView.findViewById(R.id.artist_name);
        mHolder.mFollowers = (TextView) convertView.findViewById(R.id.artist_followers);
        mHolder.mFollow = (Button) convertView.findViewById(R.id.artist_follow);
        AppLogic.ChangeTextViewFont(mContext, mHolder.mArtistName);
        convertView.setTag(mHolder);

    } else{
        mHolder = (viewHolder) convertView.getTag();
    }

    mHolder.mArtistName.setText(mItems.get(position).getArtistFullName());
    mHolder.mFollowers.setText(mItems.get(position).getArtistFollowers());
    mHolder.mFollow.setTag(R.id.artist_follow,mItems.get(position).getArtistID());
    mHolder.mFollow.setOnClickListener((OnClickListener) mContext);

    return convertView;
}

编辑

我的问题不是关于触摸物品或设置不像听众或像这样!问题是当我单击按钮时,我更改了它的背景颜色,但是这种颜色在列表中的每 10 个项目上重复出现!这里有一个相关的问题:ListView repeated CheckBox behavior every 10th item erratically

public void onClick(final View v) {

    if (!AppLogic.isLoggined(mShared)) {
        AppLogic.ToastMaker(getApplicationContext(),
                getResources().getString(R.string.msg_loginError));
        startActivity(new Intent(FirstTimePage.this, Register.class)
                .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

    } else {

        AppLogic.doFollow(FirstTimePage.this, v, mShared);
    }
}

【问题讨论】:

标签: android listview row instagram


【解决方案1】:

防止通过按钮获得焦点。

将此添加到您的 row_all_artist.xml 自定义视图中的顶部元素

android:descendantFocusability="blocksDescendants"

【讨论】:

  • 问题不在于按钮不可点击!我的问题是,当我单击一个按钮时,我会更改其背景,但它会在 listview 上的每 10 个项目上重复,例如回收
【解决方案2】:

为每一行创建一个新的 OnClickListener,或者检查当前监听器的参数中给出的视图。

【讨论】:

  • 我的回答仍然适用,你的 onClick 实现在哪里?
  • 请考虑一下,item点击没有问题,我把o'clock方法@Marcos
【解决方案3】:

您将 mContext 设置为 OnClickListener

mHolder.mFollow.setOnClickListener((OnClickListener) mContext);

您应该只实现ListView 方法setOnItemClickListener,然后检查被点击项目的位置。 Tags 在这里也很有帮助。

示例:Adding an onclicklistener to listview (android)

【讨论】:

  • 问题不在于设置 onclick 监听器,请阅读我编辑的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多