就像列表视图的每一行上的按钮一样

时间:2015-06-01 22:26:50

标签: android listview row instagram

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

这样的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);
    }
}

3 个答案:

答案 0 :(得分:1)

通过按钮防止聚焦。

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

android:descendantFocusability="blocksDescendants"

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您将mContext设置为proc freq data=dataset levels; table _numeric_; run;

OnClickListener

您应该只实施mHolder.mFollow.setOnClickListener((OnClickListener) mContext); 方法ListView,然后检查所点击项目的位置。 setOnItemClickListener在这里也很有帮助。

示例:Adding an onclicklistener to listview (android)