我试图像列表视图一样实现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);
}
}
答案 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
在这里也很有帮助。